[英]Doctrine How to get result in one row when using addSelect query
我的 SystemRepository 中有這個 Doctrine 查詢:
$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
)
)
這可能嗎?
由於技術原因,我無法在 system 和 item 之間進行 Doctrine 映射。
我認為這不可能開箱即用。 但無論如何,在我看來,這兩種結構看起來非常相似。 您可以輕松應用基於 PHP 的分組:
$grouped = [];
for ( $i = 0; $i < count($data); $i+=2){
$grouped[] = [
$data[$i],
$data[$i+1]
];
}
希望這有助於...
您也可以使用“getScalarResult”。
開箱即用是不可能的,但是您可以在結果集上使用array_chunk 。
$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_walk
函數:
array_walk($grouped, function(&$item){
$item = [
'subscription' => $item[0],
'payment' => $item[1]
];
return $item;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.