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