基于dql(Doctrine)中的两列连接两个表

时间:2014-09-06 11:05:30

标签: php doctrine-orm dql

*我想在两个列的基础上加入表格。

  • 我有这样的dql连接查询 -

    $qb=$this->em->createQueryBuilder();
    $from = 'Entities\User u';
    $qb->select('u.id User_Id, u.name User_Name, evtvst.event Event_id,evt.name   eventname, cty.name City,ctry.name Country')
    ->add('from', $from)
    ->join('Entities\EventVisitor','evtvst','with','u.id=evtvst.user')
    ->join('Entities\Event','evt','with','evt.id=evtvst.event')...........#
    ->join('Entities\Country','ctry','with','evt.country=ctry.id')
    ->join('Entities\City','cty','with','evt.city=cty.id')
    ->where('evtvst.user=?1')
    ->setParameter(1,$_GET["user"])
    ->setFirstResult($i)
    ->setMaxResults($max_result)
    ->distinct();
    $query = $qb->getQuery();
    $query->getSQl();
    $results = $query->getResult();
    

现在我再向#greg colum添加一个条件 -

- >加入('实体\事件'' EVT''与',' evt.id = evtvst.event&#39 ;和' evt.eventEdition = evtvst.edition')

但它不起作用。 请告诉我们这样做的方法。

1 个答案:

答案 0 :(得分:0)

好的,现在我找到了解决方案

您只需在第二次应用加入时更改表的别名。     我这样做了

    ->join('Entities\EventVisitor','evtvst','with','u.id=evtvst.user')
    ->join('Entities\Event','evt','with','evt.id=evtvst.event')
    ->join('Entities\Event','evt1','with','evt1.eventEdition=evtvst.edition')
    ->join('Entities\Country','ctry','with','evt.country=ctry.id')
    ->join('Entities\City','cty','with','evt.city=cty.id')
    ->where('evtvst.user=?1') 

并且工作正常。