我正在尝试从数据库中获取项目,并将其放入“ laravel-paypal”包所需的格式:
$data['items'] = [
[
'name' => 'Product 1',
'price' => 9.99,
'desc' => 'Description for product 1'
'qty' => 1
],
[
'name' => 'Product 2',
'price' => 4.99,
'desc' => 'Description for product 2',
'qty' => 2
]
];
所以我有一个很好的查询:
$order_items = DB::table('order_items')
->where('order_id', $order['id'])
->join('products', 'order_items.product_id', '=', 'products.id')
->selectRaw('products.name, order_items.price + order_items.tax as price, order_items.quantity as qty')
->get()
->toArray();
哪种产量:
array:2 [▼
0 => {#296 ▼
+"name": "fugit"
+"price": 727.82
+"qty": 1
}
1 => {#298 ▼
+"name": "MEMBERSHIP"
+"price": 35.0
+"qty": 1
}
]
但是当我尝试将其放入所需的数组中时:
$data = [];
$data['items'] = $order_items;
我收到错误消息:
Symfony \组件\调试\异常\ FatalThrowableError(E_ERROR) 不能将stdClass类型的对象用作数组
详细信息:
protected function setCartItems($items)
{
return (new Collection($items))->map(function ($item, $num) {
return [
'L_PAYMENTREQUEST_0_NAME'.$num => $item['name'],
'L_PAYMENTREQUEST_0_AMT'.$num => $item['price'],
'L_PAYMENTREQUEST_0_DESC'.$num => isset($item['desc']) ? $item['desc'] : null,
'L_PAYMENTREQUEST_0_QTY'.$num => isset($item['qty']) ? $item['qty'] : 1,
];
})->flatMap(function ($value) {
return $value;
});
我已经阅读了此错误消息的所有解决方案,他们都说我拥有的是对象数组,而不是数组数组,这就是为什么我收到此消息的原因。我知道了。他们都说我必须使用$order_items->price
访问数据。我明白了。
但是我需要数组形式的数组中的数据,并且由于它是嵌套数组,所以我什至无法弄清楚如何使用foreach循环来实现它。
任何帮助将不胜感激。
答案 0 :(得分:0)
例如,您可以将Type Casting对象用于这样的数组:
protected function setCartItems($items)
{
return (new Collection($items))->map(function ($item, $num) {
$itemArray = (array) $item;
return [
'L_PAYMENTREQUEST_0_NAME'.$num => $itemArray ['name'],
'L_PAYMENTREQUEST_0_AMT'.$num => $itemArray ['price'],
'L_PAYMENTREQUEST_0_DESC'.$num => isset($itemArray ['desc']) ? $itemArray ['desc'] : null,
'L_PAYMENTREQUEST_0_QTY'.$num => isset($itemArray ['qty']) ? $itemArray ['qty'] : 1,
];
})->flatMap(function ($value) {
return $value;
});