我制作了一个表单,用于提交单个用户的上级组织。实体链接到的数据库表包含该组织的多个条目(因为每个组织都有多个用户),我只想返回一个组织名称的实例,而不是返回20个重复的实例。
我听说有一些函数,例如distinct()或findOneOrNull,但是我不确定如何实现它们。
这是表格中的代码:
->add(
'userParent',
EntityType::class,
[
'class' => UserParent::class,
'choice_label' => function ($parents) {
return $parents->getParent()->getName();
}
]
)
答案 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中的特定行……听起来有些奇怪。