首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >西弗尼原则集团

西弗尼原则集团
EN

Stack Overflow用户
提问于 2016-10-12 09:40:02
回答 1查看 217关注 0票数 0

我需要作为关联数组从我的数据库中获得结果。我有与这个花园相关的花园和家庭(一对多)。所以每个花园我都需要一排排的家庭。因此,花园必须是关键,家庭的排列-它是一个价值。所以我试着:

代码语言:javascript
复制
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;
}

我得到了:

代码语言:javascript
复制
[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)
    }

但我希望:

代码语言:javascript
复制
[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)
        },
    }
}

如果我将添加一组一个花园,结果将是相同的第一,但花园将被选择一次,不重复。家人也一样。那么,我可以更改什么来获得数组:花园=>家族?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-12 10:09:53

三年前,我偶然发现了这个用例,当时我也希望如此。然而,GROUP BY并不是这样工作的。

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

代码语言:javascript
复制
$gardens = ....
$groups = [];
for ( $gardens as $g ){
    if (!array_key_exists($g['id'], $groups)){
        $groups[$g['id']] = [];
    }

    $groups[$g['id']][] = $g;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39995366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档