我有一个用于表单字段的查询构建器,因此它必须返回查询构建器的实例。当前,某些结果是彼此重复的,只有很小的差异。我只想显示基于特定列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());
},
]);
答案 0 :(得分:0)
这将不起作用,因为无法从汇总结果集中为实体充水。您需要回退到扩展ChoiceType的自定义类型,并使用自定义DataTransformer在提交表单后重新获取选定的实体。