从Doctrine2中检索对象是否会导致模型类的__construct()运行?

时间:2010-12-24 02:36:53

标签: zend-framework doctrine-orm

当我通过

检索一个对象时
$em->find('Application\Models\User', 1);

或其他方法(如DQL,findBy*()会导致模型类的__construct()运行?我有一个问题,我在那里设置变量,如引用EntityManager,我发现它没有设置。

我尝试在die()中添加__construct(),但它不会停止应用程序。我是否可以这样说,如果我想设置其他属性/字段,如EntityManager $em,我必须采取其他方式吗?也许像是

protected function getEm() {
    if (!isset($this->em)) {
        $this->em = \Zend_Registry::get('em');
    }
    return $this->em;
}

1 个答案:

答案 0 :(得分:2)

根据doctrine2文档,Doctrine2从不调用实体的__construct()方法。 http://www.doctrine-project.org/docs/orm/2.0/en/reference/architecture.html?highlight=construct

我认为你不应该在实体类中引用entityManager,也许可以使用服务类。