我从Doctrine 2开始,我正在尝试使这个简单的案例工作:一个系列有一个标题,这是一个MultilingualText(封装英文和法文标题)。
我正在加载一个系列,但是当我尝试获得它的法语标题时,延迟加载不起作用。
这是系列代码:
class Series {
/**
* @Id @Column(type="smallint", name="seriesId")
* @GeneratedValue
*/
private $seriesId;
/**
* @OneToOne(targetEntity="MultilingualText")
* @JoinColumn(name="title", referencedColumnName="multilingualTextId")
**/
private $title;
public function getTitle() {
return $this->title;
}
public function setTitle(MultilingualText $title) {
$this->title = $title;
}
}
现在是MultilingualText代码:
class MultilingualText {
/**
* @Id @Column(type="smallint", name="multilingualTextId")
* @GeneratedValue
*/
private $multilingualTextId;
/** @Column(type="text") */
private $frenchText;
/** @Column(type="text") */
private $englishText;
public function getFrenchText() {
return $this->frenchText;
}
public function setFrenchText($frenchText) {
$this->frenchText = $frenchText;
}
}
现在加载,这不起作用:
$series = $entityManager->find('Series', 1);
echo $series->getTitle()->getFrenchText();
然而,令人惊讶的是,这确实有效:
$multilingualText = $entityManager->find('MultilingualText', 1);
echo $multilingualText->getFrenchText() . "<br/>";
$series = $entityManager->find('Series', 1);
echo $series->getTitle()->getFrenchText();
结果:
My French title
My French title
从这个测试中,我得出结论,延迟加载在这种情况下不起作用,但不知道为什么......
非常感谢任何帮助
由于
垫
答案 0 :(得分:0)
我找到了这个东西:dev模式设置为false ... 这条简单的路线非常重要!
$isDevMode = true;