sonataAdminBundle上的query_builder被忽略

时间:2013-09-26 05:44:06

标签: doctrine-orm sonata-admin

我正在使用sonataAdminBundle和symfony2

我制作了这个剧本。 它会过滤搜索框候选人。

但忽略了这个query_builder。

还有其他要检查的地方吗?

public function configureDatagridFilters(DatagridMapper $datagridMapper)
{

    $datagridMapper
        ->add('user',null,
            array(
                'query_builder' =>
                function (\Doctrine\ORM\EntityRepository $rep) {
                     return $rep->
                     createQueryBuilder('s')
                     ->where('s.id','1');
             })       

...添加

我正在使用此脚本进行新的输入,它可以正常工作

    $formMapper
        ->with('General')
            ->add('teacher',
                null,
                array(
                    'query_builder' =>
                     function (\Doctrine\ORM\EntityRepository $rep) {
                     return $rep->
                    createQueryBuilder('s')
                    ->join('s.groups', 'g') // Assuming the association on your user entity is 'groups'
                    ->where('g.name = :group')->setParameter('group','TeacherGroup');
                    })

            ) 

但对于datagridMapper,它不起作用。

    $datagridMapper
        ->add('teacher',null,
            array(
               'query_builder' =>
                function (\Doctrine\ORM\EntityRepository $rep) {
                return $rep->
                createQueryBuilder('s')
                ->join('s.groups', 'g') // Assuming the association on your user entity is 'groups'
                ->where('g.name = :group')
                ->setParameter('group','TeacherGroup');
             }))

3 个答案:

答案 0 :(得分:1)

我已通过以下方式实现了这一目标

 $datagridMapper
    ->add('user',null,
        array(
            'field_type' => 'entity',
            'field_options => array(
              'query_builder' => function (\Doctrine\ORM\EntityRepository $rep) {
                 return $rep->
                 createQueryBuilder('s')
                 ->where('s.id','1');
              }
            )
         });       

答案 1 :(得分:1)

你应该使用' query_builder'在第四个参数中,类似于:

$datagridMapper
    ->add('teacher',null,null,
        array(
           'query_builder' =>
            function (\Doctrine\ORM\EntityRepository $rep) {
            return $rep->
            createQueryBuilder('s')
            ->join('s.groups', 'g') // Assuming the association on your user entity is 'groups'
            ->where('g.name = :group')
            ->setParameter('group','TeacherGroup');
         }))

答案 2 :(得分:0)