在我的symfony 2应用程序中,我为我的" department "实体有一个存储库。在这个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集合…我在想:
- for每个实体中的实体,如果ok填充本地集合并返回包含所有部门的合并集合?
或者使用这些:
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);
);`
您确定要返回$qb吗?
尝试返回如下内容:
$query = $qb->getQuery();
$result = $query->getResult(); // or $result = $query->getArrayResult();
return $result;
这是我的存储库方法返回的