gpt4 book ai didi

php - 检查列是否已分组(QueryBuilder)

转载 作者:行者123 更新时间:2023-11-28 23:35:56 25 4
gpt4 key购买 nike

我有以下查询:

$qb
->select('z')
->where($qb->expr()->orX(
$qb->expr()->like('z.city', ':czRequest')
))
->groupBy('z.city')
->setParameter('czRequest', $cz . '%');

使用 $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 ]
]

现在'Berlin'给出了不止一个(zip)'code',在这个例子中'14199'显然只是最后一个。另一方面,'Berlingen' 只有一个代码。

有什么方法可以更改查询,以便我使用“various”而不是“14199”但保留其他查询?它不必在查询本身中,我认为可能是查询的“foreach”(不带 groupBy)并检查重复的城市?

感谢任何提示!

最佳答案

你应该能够满足你的需求:

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

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

关于php - 检查列是否已分组(QueryBuilder),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35750056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com