【问题标题】:Difference between $object->attribute and $object['attribute'] in LaravelLaravel 中 $object->attribute 和 $object['attribute'] 的区别
【发布时间】:2019-05-10 03:50:22
【问题描述】:

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

【问题讨论】:

    标签: php laravel object eloquent


    【解决方案1】:

    访问$object['attribute'] 意味着$object 是一个array,访问$object->attribute 意味着$object 是一个object

    array 转换为object

    $object = (object) $object;
    

    另外,将object 转换为array

    $object = (array) $object;
    

    【讨论】:

    • 我试过了,仍然无法访问 $object->attribute
    【解决方案2】:

    当您构建表时,DataTables 会在内部调用集合项上的 toArray()。这发生在数据的transformation 期间。它还将嵌套对象(例如,在 EloquentDataTable 的情况下加载的 Eloquent 关系)扁平化为深度为 1 的数组(表格的每行)。

    【讨论】:

      【解决方案3】:

      你可以试试下面的方法,

         $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;
          }
      

      【讨论】:

        猜你喜欢
        • 2022-11-20
        • 2022-12-01
        • 2020-04-26
        • 2020-11-21
        • 1970-01-01
        • 1970-01-01
        • 2022-12-15
        • 2022-12-27
        • 2023-04-01
        相关资源
        最近更新 更多