作为 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();
}
任何人有什么建议这里有什么问题?
最佳答案
不推荐使用getEntityManager
的Registry
方法。由于您位于存储库中,因此您扩展的不是注册表,而是EntityRepository
。该类只有getEntityManager
方法,不建议弃用。
这种不一致的原因很容易:注册表也是其他Doctrine库(如其ODM)也使用的注册表。他们不使用名称“Entity”,而使用“Document”。因此,对于ODM,使用getEntityManager
并没有多大意义,这就是为什么将它们更改为getManager
的原因。
另一方面,EntityRepository
(它的名称已经告诉我们)是ORM特定的,这意味着ODM用户不会感到困惑(他们使用另一个存储库类)。
关于symfony - getManager 导致错误,getEntityManager 工作正常吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21741476/