Разница между $ object-> attribute и $ object ['attribute'] в Laravel - PullRequest
0 голосов
/ 10 мая 2019

Я работаю с DataTables в Laravel и пытаюсь создать объект вручную, используя 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 ]

2 голосов
/ 10 мая 2019

Доступ $object['attribute'] означает $object означает array, а $object->attribute означает $object означает object.

Для преобразования array в object:

$object = (object) $object;

Дополнительно для преобразования object в array:

$object = (array) $object;
0 голосов
/ 10 мая 2019

Вы можете попробовать следующим образом,

   $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;
    }
0 голосов
/ 10 мая 2019

DataTables вызывает внутренне toArray() для элементов коллекции при создании таблицы.Это происходит во время преобразования данных.Он также сгладит вложенные объекты (например, загруженные отношения Eloquent в случае EloquentDataTable) в массив с глубиной 1 (на строку таблицы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...