检查列是否已分组(QueryBuilder)

时间:2016-03-02 14:30:55

标签: php mysql doctrine query-builder

我有以下查询:

$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)并检查重复的城市?

任何暗示都赞赏!

1 个答案:

答案 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 . '%');

您必须计算结果(对于分组)并根据计数,您可以切换名称或其他名称。