2014-09-06 3 views
0

* Я хочу присоединиться к таблице на основе двух колонок.Объединение двух таблиц на основе двух колоний в dql (Доктрина)

  • У меня есть DQL присоединиться запрос как this-

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

теперь я добавить еще одно условие к # отмеченные Колум как this-

-> присоединиться (» Entities \ Event ',' evt ',' with ',' evt.id = evtvst.event 'и' evt.eventEdition = evtvst.edition ')

Но он не работает. PLS сказать способ сделать это.

ответ

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

и его рабочий тон.

Смежные вопросы