我有一个简单的问题。
我应该在控制器中使用entitymanager进行查询,还是应该创建单独的类,然后使用服务调用它?
控制器外的查询示例:
protected $entityManager;
protected $securityContext;
public function __construct(EntityManager $entityManager, SecurityContext $securityContext) {
$this->entityManager = $entityManager;
$this->securityContext = $securityContext;
}
public function getTest() {
$query = $this->entityManager->getRepository('PdbTestLoginBundle:PdbDomain')->find(972);
if (!empty($query)) {
return $query;
} else {
return false;
}
}
然后我注册这样的服务:
`参数: test.controller:Pdb \ TestLoginBundle \ Classes \ Test
服务: test.defaultcontroller: class:“%test.controller%” 参数: entityManager:“@ doctrine.orm.entity_manager” securityContext:“@ security.context”
然后我在控制器中调用它:
`$ helper = $ this-> get('test.defaultcontroller'); 的var_dump($ helper-> getTest());
这是正确的方式还是应该直接进行查询?
答案 0 :(得分:2)
您应该将查询构建器放在Repository类中,并告诉Entity类使用您的Repository类。
存储库类必须扩展Doctrine\ORM\EntityRepository
类。
这意味着$em->getRepository('Bundle:Entity')
返回新Repository类的对象。