如何检索包含所有关系记录的 Doctrine 记录?
Posted
技术标签:
【中文标题】如何检索包含所有关系记录的 Doctrine 记录?【英文标题】:How to retrieve a Doctrine record with all relational records? 【发布时间】:2010-07-31 10:35:25 【问题描述】:我想知道是否有一种方法可以获取包含所有关系数据的记录,例如“Deep-Fetch”
因此,如果一个模型 Child 与另一个模型 Parent 相关, 我们可以获取 Child 然后通过单个查询访问 Child->Parent->name 吗?
如今,只要访问关系,Doctrine 就会触发查询。这是否太昂贵了?需要优化吗?
谢谢
【问题讨论】:
【参考方案1】:当您从关系中选择字段时,Doctrine 会自动水合相关对象:
Doctrine_Query::create()
->select('a.*, c.*)
->from('Article a')
->innerJoin('Category c');
在本例中,Article 和 Category 对象都被水合了(没有进行额外的查询)。
【讨论】:
感谢库巴。这意味着我必须编写自定义查询,并且 fetch() 魔术方法没有重载! 你的意思是 find* 方法?无论如何不建议使用它们(性能方面)。以上是关于如何检索包含所有关系记录的 Doctrine 记录?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Doctrine ORM (1.2) 为预先存在的记录创建一对一关系
在 Symfony2 中使用 Doctrine DQL 时限制检索的记录数量
Doctrine 1.2 保存记录关系 UPDATE 而不是 INSERT