教义 orm:绕过延迟加载并在 getter 中预取相关记录

Posted

技术标签:

【中文标题】教义 orm:绕过延迟加载并在 getter 中预取相关记录【英文标题】:doctrine orm: bypass lazy loading and prefetch related records in a getter 【发布时间】:2009-10-15 12:19:21 【问题描述】:

使用 Doctrine ORM 时,是否可以在使用 getter 时启用相关记录的自动预加载? (没有明确的 leftJoins())

我知道我可以使用 leftJoin() 来获取具有相关记录的对象, 但我想避免为每个对象创建一个 DQL 查询,而只是拥有 某种自动“预取”相关记录。

这在您必须循环遍历嵌套的 Doctrine_Records 时很有用 这与 Kohana ORM 通过 with() 语句具有的功能完全相同:

http://docs.kohanaphp.com/libraries/orm#with

(即使您仅使用数组语法获得“根”记录,它也只是使用连接执行查询)。

【问题讨论】:

【参考方案1】:

我不确定我是否理解,但您可以在doctrine doc 中找到答案:

$users->loadRelated('Phonenumbers');

【讨论】:

这不适用于描述的场景。必须加载第一个用户集合(第一个 sql 查询),之后 loadRelated 将为所有加载的用户加载 Phonenumbers(第二个 sql 查询)。很高兴知道这一点,但这不是答案......

以上是关于教义 orm:绕过延迟加载并在 getter 中预取相关记录的主要内容,如果未能解决你的问题,请参考以下文章

教义:延迟加载属性

在 Flutter 应用中预加载(所有)图像资源

教义 ORM\Table(name="name") 不起作用

教义:通过关系发现了一个新实体...尝试刷新时

在 Android 应用程序开发中预加载或预缓冲 .mp4 视频

测试 Symfony 包:找不到教义.orm.entity