Php 使用自定义存储库来填充表单中的实体字段,而不是使用查询生成器
我有一个由实体字段组成的表单,如下面的Php 使用自定义存储库来填充表单中的实体字段,而不是使用查询生成器,php,forms,symfony,Php,Forms,Symfony,我有一个由实体字段组成的表单,如下面的 $builder->add('rating', 'entity', array( 'class' => 'MyBundle:Rating', 'query_builder' => function(EntityRepository $er) { return $er->createQueryBuilder('u') ->
$builder->add('rating', 'entity', array(
'class' => 'MyBundle:Rating',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.id', 'ASC');
},
在这个表单中,我可以使用查询生成器对评级实体进行自定义选择。
但是,由于我有一个用于评级实体的自定义存储库,如bellow,因此我希望使用RatingRepository类中的loadAllRoots()方法在表单中填充评级实体,而不是使用查询生成器
class RatingRepository extends EntityRepository
{
public function loadAllRoots()
{
return $this->getEntityManager()
->createQuery('SELECT r FROM MyBundle:Rating r WHERE r.parent IS NULL')
->getResult();
}
最好的解决方案是将我的表单定义为服务,然后注入实体管理器。然后我可以使用我的存储库