使用自定义存储库在我的表单中填写实体字段,而不是使用查询生成器


Using a custom repository for filling an entity field in my form instead of using query builder

>我有一个由实体字段组成的表单,如波纹管

$builder->add('rating', 'entity', array(
         'class' => 'MyBundle:Rating',
         'query_builder' => function(EntityRepository $er) {
                return $er->createQueryBuilder('u')
                    ->orderBy('u.id', 'ASC');
            },      

在此表单中,我可以使用查询生成器来自定义选择评级实体。但是由于我有一个像下面这样的评级实体的自定义存储库,我想在 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();
    }

最好

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

http://symfony.com/doc/current/book/forms.html#defining-your-forms-as-services