如何使用Eloquent在Laravel 6中访问此数组对象?
[line_items] => Array
(
[0] => stdClass Object
(
[id] => 4088662196333
[variant_id] => 29653605285997
$external = DB::table('orders')->pluck('import_order_data');
...
foreach ($external as $key => $val) {
...
Cart::updateOrCreate([
'line_item_id' => ['line_item_id' => $val['id']],
],
ErrorException
非法字符串偏移量'id'
如果我将其更改为:
'line_item_id' => ['line_item_id' => $val->id],
我收到错误消息:
ErrorException
试图获取非对象的属性“ id”
如果我将其更改为:
'line_item_id' => ['line_item_id' => $val['line_items']->id],
我收到错误消息:
非法字符串偏移'line_items'
编辑: 问题是:
protected $casts = [
'import_order_data' => 'array',
];
现在我可以像这样访问它:
dd($val['line_items'][0]['id']);
其中提供:
4092309209197
或
dd($val['line_items']);
其中提供:
array:1 [▼
0 => array:26 [▼
"id" => 4092309209197
"sku" => "1605"
"name" => "Printer Ink"
在访问数据方面有更好的选择吗?
编辑: 答案:
foreach ($val['line_items'] as $index => $lineItem) {
dd($lineItem['id']);
其中提供:
4092309209197
这是一种合理的方法吗?
答案 0 :(得分:0)
如果我理解正确,则您的数组如下所示:
$arr = [
[
"id" => 4092309209197,
"sku" => "1605",
"name" => "Printer Ink",
....etc.....
]
];
好。首先,由于外部数组只有一项,因此您可以执行以下操作:
$innerArr = $arr[0];
现在您已经拥有了:
$innerArr = [
"id" => 4092309209197,
"sku" => "1605",
"name" => "Printer Ink",
....etc.....
]
您可以这样访问它:
echo $innerArr["id"];
echo $innerArr["sku"];
....etc....
或者这样:
foreach($innerArr as $key => $val){
echo $key.": ".$val."\r\n";
}