Laravel中$ object-> attribute和$ object ['attribute']之间的区别

时间:2019-05-10 03:50:23

标签: php laravel object eloquent

我正在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);

3 个答案:

答案 0 :(得分:2)

访问$object['attribute']意味着$objectarray,访问$object->attribute意味着$objectobject

要将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;
    }