奏鸣曲管理员

时间:2017-05-30 11:53:11

标签: php symfony sonata

我是sonata和symfony的新手,我想知道是否有办法为configureFormFileds()中的某个实体创建自定义查询?

我需要它通过一个类似星形的方式(许多连接)通过单个中间表构建一个相当复杂的管理视图,这些实体是多对多相关的实体。我的想法是构建一个复杂的查询,获取所有数据,然后将其传递给我的表单。

我还尝试在教条中映射所有这些关系,并在一系列自定义表单中逐个获取它们,但不幸的是,必须相互检查实体,这样才能起作用。

2 个答案:

答案 0 :(得分:1)

是的,您可以为Entity创建自定义查询。 (Doctrine的例子)

       ->add(
            'manager',
            EntityType::class,
            [
                'label' => 'Manager',
                'class' => 'MainBundle\Entity\Manager',
                'query_builder' => function (EntityRepository $er) {
                    return $er->createQueryBuilder('m')
                        ->where('m.username LIKE :username')
                        ->setParameter('username', $this->getConfigurationPool()
                            ->getContainer()
                            ->get('security.token_storage')->getToken()->getUser()->getName()
                        )
                        ->orderBy('m.id', 'ASC');
                },
            ]
        )

如何创建查询 - 锁定官方documentation

答案 1 :(得分:0)

您需要提供更多信息才能获得准确答案,但有关您的主要问题:

  

我是奏鸣曲和symfony的新手,我想知道是否有办法   为其中一个实体创建自定义查询   configureFormFileds()?

我可以回答。一般情况下,这是可能的,是的。查看sonata_type_modelquery配置参数或sonata_type_model_autocomplete字段类型的callback选项。