2016-01-23 57 views
0

這是我得到:我不能連接兩個表與學說2

$queryBuilder = $this->createQueryBuilder('a')->select()->where('a.id = ?0')->setParameters(array($id)); 
$queryBuilder->leftJoin('Doctrine\Entity\AccommodationUser', 'b'); 
$queryBuilder->leftJoin('Doctrine\Entity\AccommodationContact', 'c'); 

這不會工作,我得到:[語法錯誤] 0行,列97:錯誤:預期文字,有「加入」錯誤信息。但是,如果我嘗試做它們一個接一個

$queryBuilder = $this->createQueryBuilder('a')->select()->where('a.id = ?0')->setParameters(array($id)); 
$queryBuilder->leftJoin('Doctrine\Entity\AccommodationContact', 'c'); 

$queryBuilder = $this->createQueryBuilder('a')->select()->where('a.id = ?0')->setParameters(array($id)); 
$queryBuilder->leftJoin('Doctrine\Entity\AccommodationUser', 'b'); 

它的工作!

回答

2

$ queryBuilder-> leftJoin('a。nameOfPropertyInEntity','b');

+0

interestind爲什麼我需要一次「的原則\實體\ AccommodationUser」,然後「AccommodationUser」 –

+0

如果它是一個實體內你不需要指定'from',因爲它是'($ alias) - > from($ entityName)''的快捷方式' - 如果直接在實體管理器上調用'createQueryBuilder',你需要指定選擇哪個實體從。 – mickadoo

1

Doctrine在連接語句中不使用類名。如果你想加入另一個表,則需要使用表單alias.property

$queryBuilder 
    ->select('u') 
    ->from('users', 'u') 
    ->leftJoin('u', 'phonenumbers', 'p', 'u.id = p.user_id') 

來源:Doctrine docs