Я сделал форму, которая отправляет родительские организации отдельного пользователя. Таблица базы данных, с которой связана сущность, содержит несколько записей для организации (поскольку с каждой организацией связано несколько пользователей), и я хочу вернуть только один экземпляр имени организации, а не 20 дубликатов.
Я слышал, что есть такие функции, как unique () или findOneOrNull, но я не уверен, как их реализовать.
Вот код из формы:
->add(
'userParent',
EntityType::class,
[
'class' => UserParent::class,
'choice_label' => function ($parents) {
return $parents->getParent()->getName();
}
]
)






Вам следует использовать построитель запросов: https://symfony.com/doc/current/reference/forms/types/entity.html#ref-form-entity-query-builder При этом вы можете создать собственный запрос, какие объекты вы хотите отображать. Но одна лань! Если вы группируете записи из таблицы, это означает, что вы будете ссылаться только на одну конкретную строку из двойников ... это звучит немного странно.
Вы можете указать QueryBuilder для EntityType:
->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.
Когда я использую этот запрос, появляется ошибка: «Предупреждение: spl_object_hash () ожидает, что параметр 1 будет объектом, строка дает»