仅在表单下拉列表symfony 3.4上返回唯一值

时间:2018-08-07 10:32:06

标签: php symfony doctrine

我制作了一个表单,用于提交单个用户的上级组织。实体链接到的数据库表包含该组织的多个条目(因为每个组织都有多个用户),我只想返回一个组织名称的实例,而不是返回20个重复的实例。

我听说有一些函数,例如distinct()或findOneOrNull,但是我不确定如何实现它们。

这是表格中的代码:

        ->add(
            'userParent',
            EntityType::class,
            [   

                'class' => UserParent::class,
                'choice_label' => function ($parents) {
                    return $parents->getParent()->getName();
                }
            ]
        )               

2 个答案:

答案 0 :(得分:1)

您可以为EntityType指定一个QueryBuilder

->add('userParent',
      EntityType::class,
      [   
          'class' => UserParent::class,
          'choice_label' => function ($parents) {
              return $parents->getParent()->getName();
          },
          'query_builder' => function(UserParentRepository $r) {
                                 return $r->getUniqueCompanies();
          },
      ]
    );

然后,您必须在getUniqueCompanies()类中添加UserParentRepository,这是DISTINCT会提供帮助的地方。

答案 1 :(得分:0)

您应该使用查询生成器: https://symfony.com/doc/current/reference/forms/types/entity.html#ref-form-entity-query-builder 这样,您可以创建自己的查询,以显示哪些实体。但是一个后腿!如果将表中的条目分组,则意味着您将仅链接到doppelgängers中的特定行……听起来有些奇怪。