Php 使用addSelect查询时如何在一行中获得结果
我的SystemRepository中有此条令查询: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
$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