我有一个实体租赁,它连接一个实体房间和实体房间连接和实体床。如何存档以使用一个查询加载所有内容?实际上,使用以下代码,实体床将被加载为懒惰。所以我有多个查询。
$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" [语义错误]第0行,col 180附近' RentalBeds WITH':错误:Class Rental \ Entity \ Rental没有任何关联命名床"。
例外是正确的,因为实体租赁没有名为床的关联。房间实体有一个名为床的协会。
答案 0 :(得分: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);