Вернуть уникальные результаты в построителе запросов - PullRequest
0 голосов
/ 23 октября 2018

У меня есть построитель запросов для моего поля формы, поэтому он должен возвращать экземпляр построителя запросов.В настоящее время некоторые результаты являются дубликатами друг друга с небольшими отличиями.Я хочу отображать только уникальные результаты на основе определенного столбца fileName/qf.fileName.

В настоящее время у меня есть:

'query_builder' => function (EntityRepository $repository) use ($options) {
    return $repository
        ->createQueryBuilder('qf')
        ->join('qf.quote', 'q', Expr\Join::WITH, 'q.client = :client')
        ->setParameter('client', '3');
},

, и я хочу, чтобы результаты были уникальными на основе столбца qf.fileName.Я попытался использовать distinct, но я считаю, что вам нужно выбрать определенный столбец, который не работает для меня, потому что я хочу вернуть всю сущность.

Я также пробовал группировать по, но я получаю следующую ошибку:

Предложение GROUP BY и содержит неагрегированный столбец

Любая помощь будет большой,спасибо.

Игнорировать жестко запрограммированный клиент!

РЕДАКТИРОВАТЬ:

Таким образом, свойство не существует насущность, она используется для представления существующих данных в форме, поэтому мы используем атрибут by_reference.

Данные, представленные внешнему интерфейсу, генерируются из построителя запросов.

->add('example', EntityType::class, [
   'class' => Example::class,
   'multiple' => true,
   'required' => false,
   'by_reference' => false,
   'expanded' => true,
   'query_builder' => function (EntityRepository $repository) use ($client) {
        return $repository
            ->createQueryBuilder('ex')
            ->join('ex.quote', 'e', Expr\Join::WITH, 'e.client = :client')
            ->setParameter('client', $client->getId());
    },
]);

1 Ответ

0 голосов
/ 23 октября 2018

Это не сработает, поскольку Enities не могут быть гидратированы из агрегированного набора результатов.Вам нужно вернуться к пользовательскому типу, расширяющему ChoiceType, и использовать пользовательский DataTransformer для повторного получения выбранной сущности после отправки формы.

...