教义 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 中预取相关记录的主要内容,如果未能解决你的问题,请参考以下文章
教义 ORM\Table(name="name") 不起作用