查询生成器和内部联接



这是请求:

select concat(user.nom, ' ', user.prenom), trace.action
from MyBundle:Ttrace trace
innerjoin MyBundle:User user on user.id = trace.user
where trace.datfin is null

有人可以使用查询生成器翻译吗?

谢谢我试过这个,但它不起作用:

 $this->getEntityManager()->createQueryBuilder()
            ->select("trace.action")
            ->addSelect("concat(user.nom, ' ', user.prenom)")
            ->from('MyBundle:Ttrace', 'trace')
            ->innerjoin('trace', 'MyBundle:User', 'user', 'user.id = trace.user')
            ->where('trace.datfin is null');

但它不起作用。

我也试过:

$this->getEntityManager()->createQueryBuilder()
            ->select("trace.action")
            ->addSelect("concat(user.nom, ' ', user.prenom)")
            ->from('MyBundle:Ttrace', 'trace')
            ->join('MyBundle:User', 'user')
            ->where('trace.datfin is null');

但是SQL查询是错误的: innerjoin user on (trace.datfin 为空) 废话!!当然,在SQL查询中没有任何地方

那么,有人知道(他们说很容易)如何构建它(使用查询构建器)

希望它能帮助某人:

$qb = $this->getEntityManager()->createQueryBuilder()
  ->select('trace.action')
  ->addSelect("concat(user.nom, ' ', user.prenom)")
  ->from('MyBundle:Ttrace', 'trace');
$qb->join('MyBundle:User', 'u', Join::WITH, $qb->expr()->eq('trace.user', 'u.id'));
$qb->where($qb->expr()->isNull('trace.datfin');

相关内容

  • 没有找到相关文章