Doctrine orm 如何将实体管理器添加到自定义类或服务?
在Symfony2中,我如何将Doctrine的实体管理器添加到自定义类或服务中 我试过Doctrine orm 如何将实体管理器添加到自定义类或服务?,doctrine-orm,symfony,Doctrine Orm,Symfony,在Symfony2中,我如何将Doctrine的实体管理器添加到自定义类或服务中 我试过$em=$this->get(“doctrine.orm.entity_manager”) 和$em=$this->getDoctrine()->getEntityManager() 两者都失败了,这导致我尝试用我的自定义类/服务扩展控制器类,但最终失败了。您需要将实体管理器服务注入到自定义服务中。您的服务定义应如下所示: my.service.name: class: my\class ar
$em=$this->get(“doctrine.orm.entity_manager”)代码>
和$em=$this->getDoctrine()->getEntityManager()代码>
两者都失败了,这导致我尝试用我的自定义类/服务扩展控制器类,但最终失败了。您需要将实体管理器服务注入到自定义服务中。您的服务定义应如下所示:
my.service.name:
class: my\class
arguments: [ @doctrine.orm.default_entity_manager ]
确保您的服务的\u构造
方法将实体管理器作为参数
有关更多信息,请参阅
顺便说一句,$this->getDoctrine()
是一种快捷方法,它只在扩展了Symfony\Bundle\FrameworkBundle\Controller\Controller
的类中起作用,您不必将控制器定义为服务来访问EntityManager。上面提到的Controller::getdoctor()
方法在检查条令服务是否实际可用后,通过调用$this->container->get('doctor')
返回条令注册表
只需将自定义类/控制器扩展为containerware
,并定义一个快捷方式方法,如:
public function getEntityManager() {
return $this->container->get('doctrine')->getEntityManager();
}
请注意,它是$this->container->get(…)
而不是$this->get(…)
在扩展/实现containerware
的类中工作得很好!谢谢你,伙计:)当使用上述方法时,我得到“对…中的非对象调用成员函数get()”。你是否扩展了containerware
?containerware在哪里?在Symfony 2.3中,我使用的是“@doctrine.orm.entity_manager”。“@doctor.orm.entity\u manager”和“@doctor.orm.default\u entity\u manager”之间有区别吗?