Symfony2查询放置

时间:2014-09-11 11:39:50

标签: php symfony

我有一个简单的问题。

我应该在控制器中使用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());

这是正确的方式还是应该直接进行查询?

1 个答案:

答案 0 :(得分:2)

您应该将查询构建器放在Repository类中,并告诉Entity类使用您的Repository类。

存储库类必须扩展Doctrine\ORM\EntityRepository类。

这意味着$em->getRepository('Bundle:Entity')返回新Repository类的对象。