我可以在表单生成器中使用查询以symfony形式获取过滤集合

Ran*_*ngh 13 php forms symfony doctrine-orm

在AcmePizza BUndle这个工作正常

->add('pizza', 'entity', array(
                'class'         => 'Acme\PizzaBundle\Entity\Pizza',
                'query_builder' => function ($repository) { return $repository->createQueryBuilder('p')->orderBy('p.name', 'ASC'); },
            ))
Run Code Online (Sandbox Code Playgroud)

我可以在收藏中做类似的事情

->add('userTasks','collection',array('type' => new UserTaskType(),
                    'class'         => 'acme\myBundle\Entity\UserTask',
                    'query_builder' => function ($repository) { return $repository->createQueryBuilder('p')->orderBy('p.name', 'ASC'); },
                ))
Run Code Online (Sandbox Code Playgroud)

ZaV*_*ZaV -2

是的。

在您的 UserTaskType 类中,添加以下方法。

public function getDefaultOptions(array $options)
{
    return array(
        'data_class' => 'acme\myBundle\Entity\UserTask',
        'query_builder' => function($repo) {
            return $repo->createQueryBuilder('p')->orderBy('p.name', 'ASC');
        }
    );
}
Run Code Online (Sandbox Code Playgroud)