gpt4 book ai didi

mysql - Symfony Doctrine 分组依据

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:52 32 4
gpt4 key购买 nike

我需要从我的数据库中获取结果作为关联数组。我有与这个花园相关的花园和家庭(一对多)。所以对于每个花园,我需要得到一系列的家庭。所以花园必须是关键,而家庭的阵列 - 这是一种值(value)观。所以我尝试了:

public function getFamiliesInGardens($client)
{
$qb = $this->createQueryBuilder('g');

$qb
->select(['g.name as garden', 'family.name', 'family.id'])
->join('g.growing', 'growing')
->join('growing.plant', 'plant')
->join('plant.family', 'family')
->where('g.client = :client')
->orderBy('g.name')
->addOrderBy('growing.endDate', 'DESC')
->setParameter('client', $client);

$grow = $qb->getQuery()->getArrayResult();

return $grow;
}

我得到了:

[0] => array(3) {
["garden"]=> string(1) "1"
["name"]=>string(9) "Brassicas"
["id"]=> int(13)
}
[1] =>
array(3) {
["garden"]=> string(1) "1"
["name"]=> string(13) "Miscellaneous"
["id"]=> int(18)
}

但我预计:

[0] => array(1) {
["1"] => array(2) {
[0] => array(2) {
["name"] =>string(9) "Brassicas"
["id"] => int(13)
},
[1] => array(2) {
["name"]=>string(9) "Miscellaneous"
["id"]=> int(18)
},
}
}

如果我将按花园添加组,结果将与第一个相同,但花园将被选择一次而不会重复。对家人也一样。那么,我可以更改什么以获得数组:garden => families?

最佳答案

我在 3 年前遇到过这个用例,当时我也希望如此。但是,GROUP BY 不是那样工作的。

您必须手动遍历记录并根据需要对它们进行分组。例如,像这样:

$gardens = ....
$groups = [];
for ( $gardens as $g ){
if (!array_key_exists($g['id'], $groups)){
$groups[$g['id']] = [];
}

$groups[$g['id']][] = $g;
}

关于mysql - Symfony Doctrine 分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39995366/

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