我目前正在将最近的symfony 1.4应用程序移植到Symfony2和Doctrine2。我在转换映射信息(我们使用YAML文件)后注意到的第一件事是,查询用户对象进入无限循环。 我与这些协会玩过,发现我有一个周期性的。为了调试的目的,我删除了那个,想知道为什么它会在所有这些关联中循环。我刚刚要求所有用户。如何将延迟加载设置为Doctrine2的默认加载?
今天我又遇到了另一个对象的相同问题,只是它在930个查询后停止,并没有一个无限循环。看来Doctrine2在填充对象时会查询每个关联的所有对象。没有代理,没有延迟加载。
我启用了fetch: LAZY
关于该关联和voilà,自动填充已停止! 但现在我希望将其作为默认行为,因为该模型有超过50个关联,并且我不想将这一行添加到所有这些关联。
如何激活延迟加载作为Doctrine 2中的默认加载?
其实这可能是问题的一部分,但我不以任何方式访问相关的对象。在你的例子中,我只会迭代博客并回应博客的标题,而不是对帖子进行任何操作。然而,Doctrine(或Symfony)使用单个查询填充每个博客中的所有帖子。 我怀疑我的一些设置导致水合过程不必要地完全填充每个对象。 – Yeti
似乎模型中的循环引用与此有关。我目前正在编写一个最小的例子。 – Yeti
也许您试图访问Blog – ken