Php 使用addSelect查询时如何在一行中获得结果

Php 使用addSelect查询时如何在一行中获得结果,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,我的SystemRepository中有此条令查询: $qb = $this->createQueryBuilder('s') ->select('s') ->addSelect('item') ->from('Item', 'item') ->where('item.iId = s.id'); 通过此查询,我得到如下结果: Array ( [0] => Syst

我的SystemRepository中有此条令查询:

        $qb = $this->createQueryBuilder('s')
        ->select('s')
        ->addSelect('item')
        ->from('Item', 'item')
        ->where('item.iId = s.id');
通过此查询,我得到如下结果:

    Array
(
    [0] => System 1
    [1] => ItemObject related to SystemObject 1
    [2] => SystemObject 2
    [3] => ItemObject related to SystemObject 2
    [4] => SystemObject 3
    [5] => ItemObject related to SystemObject 3
)
但我希望得到这样的结果:

    Array
(
    [0] => Array( 
            [0] => SystemObject 1
            [1] => ItemObject related to SystemObject 1
            ),
    [1] => Array( 
            [0] => SystemObject 2
            [1] => ItemObject related to SystemObject 2
            ),
    [2] => Array( 
            [0] => SystemObject 3
            [1] => ItemObject related to SystemObject 3
            )
)
可能吗


由于技术原因,我无法在系统和项目之间进行原则映射。

我认为这是不可能的。但无论如何,在我看来,这两种结构看起来非常相似。您可以轻松应用基于PHP的分组:

$grouped = [];
for ( $i = 0; $i < count($data); $i+=2){
    $grouped[] = [
        $data[$i],
        $data[$i+1]
    ];
}
$grouped=[];
对于($i=0;$i

希望这有帮助…

这不是现成的,但您可以在结果集上使用

$data = Array
(
    'SubscriptionObject 1',
    'PaymentObject related to SubscriptionObject 1',
    'SubscriptionObject 2',
    'PaymentObject related to SubscriptionObject 2',
    'SubscriptionObject 3',
    'PaymentObject related to SubscriptionObject 3'
);

$grouped = array_chunk($data, 2);
var_dump($grouped);
没有神奇的方法来更改键,在对数组进行分块后使用
array\u walk
函数:

array_walk($grouped, function(&$item){
    $item = [
        'subscription' => $item[0],
        'payment' => $item[1]
    ];
    return $item;
});

你也可以使用“getScalarResult”。

我不敢给出这个答案,但你是对的。哈,我知道你的意思:D