在Doctrine 2.0中未加载延迟加载属性

时间:2011-09-29 14:40:05

标签: php doctrine doctrine-orm

我正在使用PHP和Doctrine 2.0。所有实体都可以正常工作,但下面详述的实体关系除外(或者其他实体在我没有注意到的情况下失败)。


考虑以下实体:

/** @Entity */
class Target {
  /**
   * @ManyToOne(targetEntity="k\entity\Source", cascade={"persist"})
   * @JoinColumn(name="basic_vacancy_id", nullable=false)
   * @var \k\entity\Source
   */
  $source;

  ...
}

/** @Entity */
class Source {

  ...
}

现在,当我调用$target->getSource()时,我得到了k\entity\proxy\kentitySourceProxy的实例(这是正确的代理类)。但是,Source的属性的所有getter都返回NULL

我可能做错了什么?


我已将fetch="EAGER"属性添加到关系注释中,现在一切似乎都很好(除了加载不再是懒惰的事实)。什么可能导致Doctrine 2.0的延迟加载中断?

3 个答案:

答案 0 :(得分:2)

正如我在上面的问题中所看到的,我已经将fetch =“EAGER”属性添加到关系注释中,现在一切似乎都很好(除了加载不再是懒惰的事实)。

这当然是一种解决方法,并没有修复实际的错误。除此之外,我仍然不知道是什么导致我的代码/学说破坏。但是,这种解决方案对性能的影响似乎可以忽略不计 - 即使存在也是如此。

答案 1 :(得分:0)

它看起来像内部d2错误。或者使用反射来检索对象的属性。代理类使用persister在任何方法调用上初始化它们。在此代理上使用getter时是否会发出查询?

答案 2 :(得分:-1)

我有一个非常类似的问题,在这里报道: -

Zend 1.11.11 Doctrine 2.1.2 initalising of associative proxy entities

你在哪里添加fetch =“EAGER”属性?