我有以下查询:
$cz = 'Ber'
使用array:3 [
0 => array:4
[ "id" => 12899 "country" => "DE" "city" => "Berlin" "code" => 14199 ]
1 => array:4
[ "id" => 6483 "country" => "DE" "city" => "Berlingen" "code" => 54570 ]
2 => array:4
[ "id" => 8438 "country" => "DE" "city" => "Berlingerode" "code" => 37339 ]
]
,我得到一个这样的数组:
redirect_to "/fights/#{@fight.id}"
现在'柏林'提供了多个(zip)'代码',在这个例子中,'14199'显然只是最后一个。另一方面,'Berlingen'只有一个代码。
有没有办法改变查询,以便我有'各种'而不是'14199'但保留其他? 它不一定在查询本身,我想可能是查询的'foreach'(没有outBy)并检查重复的城市?
任何暗示都赞赏!
答案 0 :(得分:1)
你应该能够满足你的需要:
$qb
->select('z, CASE WHEN (COUNT(z)) > 1 THEN \'various\' ELSE z.code END AS code2')
->where($qb->expr()->orX(
$qb->expr()->like('z.city', ':czRequest')
))
->groupBy('z.city')
->setParameter('czRequest', $cz . '%');
您必须计算结果(对于分组)并根据计数,您可以切换名称或其他名称。