我想知道如何在DQL select语句中连接两个字段和一些文字。
我现在有这个,但没有运气......
$qb
->select('season.id, concat(competition.name, '-',season.name) AS specs')
->leftJoin('season.competition', 'competition')
->where('season.name LIKE :q')
->setParameter('q', '%'.$q.'%')
->setMaxResults($p)
;
答案 0 :(得分:5)
我们不能在这里发送三个参数,但我们可以这样做,
$em = \Zend_Registry::get('em');
$qb_1 = $em->createQueryBuilder();
$q_1 = $qb_1->select( "reprt_abs.id" )
->addSelect( "CONCAT( CONCAT(reporter.firstname, ' '), reporter.lastname)" )
->from( '\Entities\report_abuse', 'reprt_abs' )
->leftJoin( 'reprt_abs.User', 'reporter' )
->getQuery()->getResult();
这部分就是你想要的:
$ qb_1-> select(“reprt_abs.id”) - > addSelect(“CONCAT(CONCAT(reporter.firstname,''),reporter.lastname)”)
以下是我方的输出:
array (size=19)
0 =>
array (size=2)
'id' => int 1
1 => string 'Jaskaran Singh' (length=14)
1 =>
array (size=2)
'id' => int 9
1 => string 'Harsimer Kaur' (length=14)
2 =>
array (size=2)
'id' => int 12
1 => string 'Jaskaran Singh' (length=14)
3 =>
array (size=2)
'id' => int 16
1 => string 'Jaskaran Singh' (length=14)
4 =>
array (size=2)
'id' => int 19
1 => string 'Jaskaran Singh' (length=14)
5 =>
array (size=2)
'id' => int 4
1 => string 'shilpi jaiswal' (length=14)
答案 1 :(得分:0)
我在MySQL数据库PDO平台上使用Doctrine 2.4+的解决方案:
$concat = new Query\Expr\Func('CONCAT', $name[$k]);
$concat .= ' as ' . $k;
$concat = str_replace(',', ',\' \',', $concat);
$this->query->addSelect($concat);
所以$ name [$ k]是一个字段数组,可以随意添加。然后我用str_replace在字段之间添加一些间距。 $ k是concat字段的名称,因此$ concat的结果是
"CONCAT(p.email,' ', h.phoneNumber,' ', p.officialName) as details"