在Admin类的SonataAdminBundle中,我无法创建orderBy on ManyToMany field

例如作者和书。作者可以有很多书,书可以有很多汽车。在上面的链接中写道,我可以对表单字段使用查询。因此,我可以准备一个查询,以选择作者并按姓名骚扰他们。如何处理?如何获得EntityManager以便创建查询并将其通过查询选项传递?

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('name','text')
        ->add('author', 'sonata_type_model', array('query' => ....), array('edit' => 'inline'))
    ;
}

最佳答案

好的,我知道了!

/**
 * @param \Sonata\AdminBundle\Form\FormMapper $formMapper
 * @return void
 */
protected function configureFormFields(FormMapper $formMapper)
{
    $entity = new \MyCompany\MyProjectBundle\Entity\Seria();
    $query = $this->modelManager->getEntityManager($entity)->createQuery('SELECT s FROM MyCompany\MyProjectBundle\Entity\Seria s ORDER BY s.nameASC');

    $formMapper
        ->add('title', 'text')
        ->add('seria', 'sonata_type_model', array('required' => true, 'query' => $query), array('edit' => 'standard'))
        ->add('description', 'textarea',
               array('attr' => array('class' => 'tinymce'), 'required' => false))
    ;
}

10-04 16:07