我正在Laravel中使用DataTables进行开发,并尝试使用collect()
手动创建对象来创建集合。当我将集合推送到DataTable中时,出现了问题,并且无法使用此$object->attribute.
出现错误后,我已经尝试使用$object['attribute'],
调用属性,并且效果很好。
有人可以让我了解这些差异以及如何将$object['attribute']
转换为$object->attribute
吗?
这是我创建对象的查询
$result = collect();
$item = collect([
'row' => ($key+1),
'item_id' => $value->uid,
'item' => $value->nama_item,
'sub_kategori' => $value->sub_jenis_item->sub_jenis_item,
'kategori' => $value->jenis_item->jenis_item,
'gudang_id' => $id_gudang
]);
$result->push($item);
答案 0 :(得分:2)
访问$object['attribute']
意味着$object
是array
,访问$object->attribute
意味着$object
是object
。
要将array
转换为object
:
$object = (object) $object;
另外,将object
转换为array
:
$object = (array) $object;
答案 1 :(得分:0)
DataTables在内部对集合项进行toArray()
调用。这发生在数据transformation期间。还将嵌套对象(例如,在EloquentDataTable
的情况下加载口才的关系)展平为深度为1(表的每一行)的数组。
答案 2 :(得分:0)
您可以尝试以下方式
$result = collect();
$item = collect([
'row' => ($key+1),
'item_id' => $value->uid,
'item' => $value->nama_item,
'sub_kategori' => $value->sub_jenis_item->sub_jenis_item,
'kategori' => $value->jenis_item->jenis_item,
'gudang_id' => $id_gudang
]
);
$result->push($item);
$resultObj = json_decode($result);
foreach($resultObj as $obj){
echo $obj->row;
}