我正在使用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的延迟加载中断?
答案 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”属性?