php - Doctrine2 orderBy clause only accepts alias for concat column and generates wrong query for MSSQL -
doctrine2 orderby clause accepts alias concat column , genrates wrong query mssql.
see orderby clause in following doctrine2 query.
$em = \zend_registry::get('em'); $qb_1 = $em->createquerybuilder(); $q_1 = $qb_1->select( 'reprt_abs' ) ->addselect( "reprt_abs.id idd" ) ->addselect( "concat( concat(reporter.firstname, ' '), reporter.lastname) reporter_full_name" ) ->addselect( "reporter.email reporter_email" ) ->addselect( "concat( concat(prfle_usr.firstname, ' '), prfle_usr.lastname) reported_full_name" ) ->addselect( "prfle_usr.email reported_email" ) ->addselect( "reprt_abs.type typ" ) ->from( '\entities\report_abuse', 'reprt_abs' ) ->leftjoin( 'reprt_abs.ilookuser', 'reporter' ) ->leftjoin( 'reprt_abs.profileuser', 'prfle_usr' ); //list length if( $limit ) { $q_1->setfirstresult( $offset ) ->setmaxresults( $limit ); } //sorting if( $orderbycolumn && $order ) { $q_1->orderby( "reporter_full_name", $order ); } //filtering if( $filter_columns && $filtertext ) { foreach ( $filter_columns $key => $filter_column ) { $q_1->orwhere( $filter_column.' :word'.$key) ->setparameter('word'.$key, '%'.$filtertext.'%'); } } return $q_1->getquery()->getresult(); if see orderby clause in query can find passing alias of column have selected in select clause. not allow me pass "concat( concat(reporter.firstname, ' '), reporter.lastname)" directly, if gives sytax error
[syntax error] line 0, col 432: error: expected end of string, got '('
and issue alias generates mssql query not work.
select * ( select row_number() on (order sclr3 asc) doctrine_rownum, r0_.id id0, r0_.type type1, r0_.id id2, ((i1_.firstname + ' ') + i1_.lastname) sclr3, i1_.email email4, ((i2_.firstname + ' ') + i2_.lastname) sclr5, i2_.email email6, r0_.type type7, r0_.reporter_user_id reporter_user_id8, r0_.post_id post_id9, r0_.profile_id profile_id10 report_abuse r0_ left join ilook_user i1_ on r0_.reporter_user_id = i1_.id , (i1_.deleted_at null) left join ilook_user i2_ on r0_.profile_id = i2_.id , (i2_.deleted_at null)) doctrine_tbl doctrine_rownum between 51 , 100 it give following error: msg 207, level 16, state 1, line 3 invalid column name 'sclr3'.
now trapped both sides mssql , doctrine2.
i can provide more description if not clear.
Comments
Post a Comment