getManager导致错误,getEntityManager工作正常吗?

PBR*_*PBR 7 doctrine repository symfony

作为Symfony2中与之间的区别新手和教义我挣扎(在自定义库类)getEntityManager()getManager().

我知道getEntityManager()正在被弃用,但是如果我使用它getManager(),我会得到"未定义的方法'getManager'.方法名称必须以findBy或findOneBy开头!"

在我的课程中,以下代码有效:

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

如果我改变(升级?)它像下面的代码,我得到错误...

public function haalidop($verbid)
    {
        return $this->getManager()
                    ->createQuery('SELECT p FROM myBundle:Verbs p WHERE p.verbid='.$verbid)
                    ->getSingleResult();
    }
Run Code Online (Sandbox Code Playgroud)

有人在这里有任何建议吗?

Wou*_*r J 12

不推荐使用该getEntityManager方法Registry.因为你在一个存储库中,所以你扩展了注册表而不是注册表EntityRepository.该类只有一个getEntityManager方法,不推荐使用.

这种不一致的原因很简单:注册表也可以用于其他Doctrine库,就像它们的ODM一样.它们不使用名称"Entity",而是使用"Document".出于这个原因,使用getEntityManager对ODM没有多大意义,这就是为什么他们改变了getManager.
另一方面,EntityRepository它的名称已经告诉我们 - 特定于ORM,这意味着ODM用户没有混淆(他们使用另一个存储库类).