2014-11-30 2 views
0

У меня есть компания Аренда, которая присоединяется к сущности Комната и сущность Комната соединяется и сущность. Как я могу архивировать для загрузки всего одним запросом? На самом деле со следующим кодом объект Bed будет загружен ленивым. Поэтому у меня есть еще несколько запросов.Doctrine 2 Присоединиться к сущности, которая присоединяется к объекту

$qb->select('Rental', 'RentalRooms') 
     ->from('Rental\Entity\Rental', 'Rental')   
     ->leftJoin('Rental.rooms', 'RentalRooms')   
     ->where($qb->expr()->eq('Rental.slug', ':slug')) 
     ->setParameter('slug', $slug); 

Я пробовал так:

$qb->select('Rental', 'RentalRooms', RentalBeds) 
     ->from('Rental\Entity\Rental', 'Rental')   
     ->leftJoin('Rental.rooms', 'RentalRooms') 
     ->leftJoin('RentalRooms.beds', 'RentalBeds')    
     ->where($qb->expr()->eq('Rental.slug', ':slug')) 
     ->setParameter('slug', $slug); 

Но чем я получаю Doctrine \ ORM \ Query \ QueryException «[Семантическая Error] строка 0, столбец 180 вблизи 'RentalBeds с': Ошибка: Аренда класса \ Сущность \ Аренда не имеет ассоциации названных кроватей ".

И исключение является правильным, поскольку компания не имеет ассоциации с названными кроватями. У объекта комнаты есть ассоциация, названная кроватями.

ответ

0

Я нашел решение! : D Просто нужно было добавить -> addSelect ('RentalBeds')

$qb->select('Rental', 'RentalRooms', RentalBeds) 
    ->from('Rental\Entity\Rental', 'Rental')   
    ->leftJoin('Rental.rooms', 'RentalRooms') 
    ->leftJoin('RentalRooms.beds', 'RentalBeds') 
    **->addSelect('RentalBeds')**   
    ->where($qb->expr()->eq('Rental.slug', ':slug')) 
    ->setParameter('slug', $slug); 
Смежные вопросы