mysql - Doctrine 2 加入实体 加入实体

标签 mysql doctrine-orm doctrine entity left-join

我有一个实体 Rental,它连接实体 Room,实体 Room 连接和实体 Bed。如何归档以通过一个查询加载所有内容?实际上,使用以下代码,实体 Bed 将被延迟加载。所以我有不止一个查询。

$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 行,第 180 列靠近 'RentalBeds WITH':错误:类 Rental\Entity\Rental 没有名为 Beds 的关联”。

异常(exception)是正确的,因为实体 Rental 没有名为 Beds 的关联。房间实体具有名为“床”的关联。

最佳答案

我找到了解决办法! :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);  

关于mysql - Doctrine 2 加入实体 加入实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208586/

相关文章:

java - ResultSetMetaData.getColumnTypeName 返回 UNKNOWN

python - Mysql 在类中与 python 的连接

php - Doctrine manyToMany 返回 PersistentCollection 而不是 ArrayCollection

symfony - 提交和开始事务有什么作用?

php - Doctrine 2 中的动态表/实体名称

forms - 将不在模式中的表单字段添加到 Doctrine 表单 Symfony 1.4

php - PHP Store不显示产品

mysql - 如何使用 tFlowToIterate 组件并行

forms - symfony2 表单中找不到实体错误

php - Doctrine 2 的判别器问题