作为 Symfony2 和 Doctrine 的新手,我正在为 getEntityManager()getManager() 之间的差异而苦苦挣扎(在自定义存储库类中)。

我知道 getEntityManager() 已被弃用,但如果我改用 getManager(),我会收到“未定义的方法 'getManager'。方法名称必须以 findBy 或 findOneBy 开头!”

在我的类(class)中,以下代码有效:

public function haalidop($verbid)
{
    return $this->getEntityManager()
                ->createQuery('SELECT p FROM myBundle:Verbs p WHERE p.verbid='.$verbid)
                ->getSingleResult();
}

如果我像下面的代码一样更改(升级?)它,我会收到错误...
public function haalidop($verbid)
    {
        return $this->getManager()
                    ->createQuery('SELECT p FROM myBundle:Verbs p WHERE p.verbid='.$verbid)
                    ->getSingleResult();
    }

任何人有什么建议这里有什么问题?

最佳答案

不推荐使用getEntityManagerRegistry方法。由于您位于存储库中,因此您扩展的不是注册表,而是EntityRepository。该类只有getEntityManager方法,不建议弃用。

这种不一致的原因很容易:注册表也是其他Doctrine库(如其ODM)也使用的注册表。他们不使用名称“Entity”,而使用“Document”。因此,对于ODM,使用getEntityManager并没有多大意义,这就是为什么将它们更改为getManager的原因。
另一方面,EntityRepository(它的名称已经告诉我们)是ORM特定的,这意味着ODM用户不会感到困惑(他们使用另一个存储库类)。

关于symfony - getManager 导致错误,getEntityManager 工作正常吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21741476/

10-13 07:50