2016-05-23 77 views
0

这里是要求:的QueryBuilder和内部连接

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 

有人能翻译,使用QueryBuilder的?

谢谢 我试过,但它不工作:

$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用户对(trace.datfin为null)废话!当然在SQL查询

所以没有在那里,没有人知道(很容易,他们说)如何构建它(用查询生成器)

TY

+1

尝试寻找和自己做,然后我们可以帮助,如果你被卡住 – Letsrocks

+0

如果你读它很容易:http://symfony.com/doc/current/book/doctrine.html#querying -for-objects-using-doctrine-s-query-builder和http://doctrine-orm.readthedocs.io/en/latest/reference/dql-doctrin e-query-language.html#dql-select-examples – Miro

+0

您提出的文档不是针对问题的理由 – mlwacosmos

回答

0

希望能是要去帮助别人:

$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');