Symfony 2 - 在DQL中使用Doctrine的集合

时间:2014-05-20 09:19:24

标签: php symfony doctrine-orm repository

在我的symfony 2应用程序中,我有一个我的“部门”实体的存储库。在这个repo中,我有一个名为getAvailableDepartements的方法,我在XXXType + Ajax中使用它来获取符合以前选择的所有部分:

public function getAvailableDepartements( $entites ) {

$qb = $this->createQueryBuilder('d');        
        $qb->where('d.entite IN :ents')
        ->setParameter('ents', $entites);                                     

        return $qb;
    }

我的问题是关于最佳实践,上面的代码不起作用,我想知道其他symfony开发人员将如何做我试图实现的目标:检索他们的“entite”字段在$ entites中的所有部分参数中的集合......我在想:

  • 实体中的foreach实体,如果可以填充本地集合并返回包含所有部分的合并集合?
  • 或使用以下各种:

    public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) { parent::findBy($criteria, $orderBy, $limit, $offset);
    }

但它似乎都很难看。

感谢您的帮助和建议!

编辑: 在XXType类中调用此方法:

    `$form->add('departements', 'entity', array( 
'class' => 'XXXperimetreBundle:Departement', 
'property' => 'sigle', 'multiple' => true, 
'expanded' => true, 
'query_builder' => function(DepartementRepository $dr) use ($entites) { return $er->getAvailableDepartements($entites); 
);`

1 个答案:

答案 0 :(得分:1)

您确定要退回$ qb吗?

尝试返回类似的内容:

$query = $qb->getQuery();
$result = $query->getResult(); // or $result = $query->getArrayResult();

return $result;

这就是我的存储库方法返回的内容。