Doctrine - 在一个查询中获取实体和关系

ste*_*ste 4 symfony doctrine-orm

我是否错过了Doctrine的观点?它对某些场景非常有用,但是对于使用Id检索实体的基本场景(比如使用find()或findOneBy()),为什么会看到为每个关系填充主体实体属性的查询?

当然,使用我创建的映射/注释,Doctrine应该能够进行一些连接和一个查询,而无需为每个实体的检索编写DQL查询.

或者,正如我所预测的那样,我错过了某个地方的观点!

小智 6

只需将相关实体的别名添加到select查询的一部分即可.

比方说,你有Book一对多的关联Cover,你想要选择一些带有封面的书.

使用查询构建器,使用:

->createQueryBuilder()
->select("book, cover")
->from("Book", "book")
->leftJoin("book.covers", "cover")
Run Code Online (Sandbox Code Playgroud)

使用查询,使用:

SELECT book, cover FROM Book book LEFT JOIN book.covers cover
Run Code Online (Sandbox Code Playgroud)

因此,您将收到Book预填充$covers集合的集合.

  • 正如您可以想象的那样,我现在对此有了更多了解,但感谢您的回复! (3认同)