带连接的多维数组结果

Pie*_*NAY 1 php symfony doctrine-orm

我正在联接表,我想基于联接获得多维查询结果。

# AppBundle:ProductRepository

$this->createQueryBuilder('pr')
    ->select('pk.id', 'pk.name', 'pr.id', 'pr.label')
    ->join('pr.package', 'pk')
    ->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)

如您所见Product,链接到一个Package(很多)

这是我得到的结果:

array(
    array('id' => '1', 'name' => 'package 1', 'id1' => 1, 'label' => 'product 1'),
    array('id' => '1', 'name' => 'package 1', 'id1' => 2, 'label' => 'product 2'),
    array('id' => '2', 'name' => 'package 2', 'id1' => 3, 'label' => 'product 3'),
)
Run Code Online (Sandbox Code Playgroud)

这是我想要得到的:

array(
    array(
        'id' => '1',
        'name' => 'package 1',
        'products' => array(
            array(
                'id' => 1,
                'label' => 'product 1',
            ),
            array(
                'id' => 2,
                'label' => 'product 2',
            ),
        ),
    ),
    array(
        'id' => '2',
        'name' => 'package 2',
        'products' => array(
            array(
                'id' => 3,
                'label' => 'product 3',
            ),
        ),
    ),
)
Run Code Online (Sandbox Code Playgroud)

有没有办法用Doctrine 2来水化这种多维数组?

我的意思是说与教义2,而不是与“后期生产” php循环

Yos*_*shi 5

您需要结合使用数组水化器部分结果。尝试:

$this->createQueryBuilder('pr')
    ->select('partial pk.{id, name}, partial pr.{id, .label}')
    ->join('pr.package', 'pk')
    ->getQuery()
    ->getArrayResult()
;
Run Code Online (Sandbox Code Playgroud)