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();
    }

最好的解决方案是将我的表单定义为服务,然后注入实体管理器。然后我可以使用我的存储库