如何从控制器内部使用Symfony 2.1获取Doctrine实体的实体管理器

Sla*_* II 30 controller symfony doctrine-orm

如何从具有最新Symfony和Doctrine的控制器中获取实体管理器?

"The Book"中描述的方式现已标记为已弃用.什么是现代(适当)的方式来做到这一点?

public function someAction()
{
    // getEntityManager() from Doctrine\Bundle\DoctrineBundle\Registry is deprecated
    $entityManager = $this->getDoctrine()->getEntityManager();
    ...
}
Run Code Online (Sandbox Code Playgroud)

Eln*_*mov 52

$this->getDoctrine()->getManager()改用.

实际上,最好不要让控制器知道你正在使用的持久层.应将这些内容移动到服务层以抽象数据持久化的方式.

  • 我认为Symfony文档并不打算鼓励这种做法,而是我认为它们只是用作向导来向您展示完成给定任务所必需的组件.让它留给开发人员来决定逻辑应该在哪里. (4认同)
  • @ElnurAbdurrakhimov:我是php和symfony的初学者,但是想从一开始就学习和习惯最佳实践,你有样本表明关注的分离吗?谢谢! (2认同)