Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Symfony主义集团_Mysql_Doctrine Orm_Symfony - Fatal编程技术网

Mysql Symfony主义集团

Mysql Symfony主义集团,mysql,doctrine-orm,symfony,Mysql,Doctrine Orm,Symfony,我需要以关联数组的形式从数据库中获取结果。我的花园和家庭与这个花园相关(一对多)。因此,对于每个花园,我需要得到一系列的家庭。所以,花园必须是关键,家庭的数组-这是一个价值观。所以我试着: public function getFamiliesInGardens($client) { $qb = $this->createQueryBuilder('g'); $qb ->select(['g.name as garden', 'family.name

我需要以关联数组的形式从数据库中获取结果。我的花园和家庭与这个花园相关(一对多)。因此,对于每个花园,我需要得到一系列的家庭。所以,花园必须是关键,家庭的数组-这是一个价值观。所以我试着:

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)
        },
    }
}

若我将按花园添加组,结果将和第一个相同,但花园将被选择一次而不重复。家庭也一样。那么,我可以改变什么来获得array:garden=>families呢?

我在3年前遇到了这个用例,我也希望如此。但是,
groupby
不能这样工作

您必须手动迭代记录,并根据需要对它们进行分组。例如,类似这样的内容:

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

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

3年前我遇到了这个用例,我也希望如此。但是,
groupby
不能这样工作

您必须手动迭代记录,并根据需要对它们进行分组。例如,类似这样的内容:

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

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