将查询生成器在 Laravel 中返回的 stdClass/Array 按值拆分为 2 个数组
Split stdClass/Array returned by Query Builder in Laravel into 2 arrays by value
所以我试图从所有账单中获取所有详细信息,在 bill_details table 中我有一列来标识该详细信息所属的账单(外键),我的查询看起来像这个:
return $this
->join('bill_detail as bd' , 'bills.id' , '=', 'bd.bill_id')
->join('business' , 'bills.business_id' , '=', 'business.id')
->select('bills.user_id','bd.item','bd.quantity','bd.amount','bd.bill_id','bills.total')
->where('bills.user_id', '=', $user)
->get();
哪个 returns 这个 stclass 或数组(格式为 php):
array(4) {
[0]=> array(6)
{ ["user_id"]=> int(1) ["item"]=> string(4) "Coffe" ["quantity"]=> int(1) ["amount"]=> string(4) "2.00" ["bill_id"]=> int(1) ["total"]=> string(5) "15.00" }
[1]=> array(6)
{ ["user_id"]=> int(1) ["item"]=> string(18) "Water" ["quantity"]=> int(1) ["amount"]=> string(4) "6.00" ["bill_id"]=> int(1) ["total"]=> string(5) "15.00" }
[2]=> array(6)
{ ["user_id"]=> int(1) ["item"]=> string(7) "Apple" ["quantity"]=> int(1) ["amount"]=> string(4) "1.00" ["bill_id"]=> int(2) ["total"]=> string(5) "23.00" }
[3]=> array(6)
{ ["user_id"]=> int(1) ["item"]=> string(8) "Orange" ["quantity"]=> int(1) ["amount"]=> string(4) "4.00" ["bill_id"]=> int(2) ["total"]=> string(5) "23.00" }
}
除了 foreach 之外,是否有任何最佳方法可以根据 bill_id 列将此数组拆分为多维数组?
谢谢。
是的,您可以 collect
然后按 bill_id
分组。
$results = $this
->join('bill_detail as bd' , 'bills.id' , '=', 'bd.bill_id')
->join('business' , 'bills.business_id' , '=', 'business.id')
->select('bills.user_id','bd.item','bd.quantity','bd.amount','bd.bill_id','bills.total')
->where('bills.user_id', '=', $user)
->get();
return collect($results)->groupBy('bill_id');
所以我试图从所有账单中获取所有详细信息,在 bill_details table 中我有一列来标识该详细信息所属的账单(外键),我的查询看起来像这个:
return $this
->join('bill_detail as bd' , 'bills.id' , '=', 'bd.bill_id')
->join('business' , 'bills.business_id' , '=', 'business.id')
->select('bills.user_id','bd.item','bd.quantity','bd.amount','bd.bill_id','bills.total')
->where('bills.user_id', '=', $user)
->get();
哪个 returns 这个 stclass 或数组(格式为 php):
array(4) {
[0]=> array(6)
{ ["user_id"]=> int(1) ["item"]=> string(4) "Coffe" ["quantity"]=> int(1) ["amount"]=> string(4) "2.00" ["bill_id"]=> int(1) ["total"]=> string(5) "15.00" }
[1]=> array(6)
{ ["user_id"]=> int(1) ["item"]=> string(18) "Water" ["quantity"]=> int(1) ["amount"]=> string(4) "6.00" ["bill_id"]=> int(1) ["total"]=> string(5) "15.00" }
[2]=> array(6)
{ ["user_id"]=> int(1) ["item"]=> string(7) "Apple" ["quantity"]=> int(1) ["amount"]=> string(4) "1.00" ["bill_id"]=> int(2) ["total"]=> string(5) "23.00" }
[3]=> array(6)
{ ["user_id"]=> int(1) ["item"]=> string(8) "Orange" ["quantity"]=> int(1) ["amount"]=> string(4) "4.00" ["bill_id"]=> int(2) ["total"]=> string(5) "23.00" }
}
除了 foreach 之外,是否有任何最佳方法可以根据 bill_id 列将此数组拆分为多维数组?
谢谢。
是的,您可以 collect
然后按 bill_id
分组。
$results = $this
->join('bill_detail as bd' , 'bills.id' , '=', 'bd.bill_id')
->join('business' , 'bills.business_id' , '=', 'business.id')
->select('bills.user_id','bd.item','bd.quantity','bd.amount','bd.bill_id','bills.total')
->where('bills.user_id', '=', $user)
->get();
return collect($results)->groupBy('bill_id');