学说2懒惰加载不起作用

时间:2014-11-01 20:14:13

标签: doctrine-orm lazy-loading

我从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

从这个测试中,我得出结论,延迟加载在这种情况下不起作用,但不知道为什么......

非常感谢任何帮助

由于

1 个答案:

答案 0 :(得分:0)

我找到了这个东西:dev模式设置为false ... 这条简单的路线非常重要!

    $isDevMode = true;