Как использовать массив JSON в Laravel

#laravel

Вопрос:

этот набор элементов находится в контроллере

 itemArray = DB::select($sql);
 

@json($itemArray) в файле блейда

он отображает

 [{"date":"2021-08-03 00:00:00","price":10000},
{"date":"2021-08-06 00:00:00","price":11400},
{"date":"2021-08-13 00:00:00","price":11400},
{"date":"2021-08-20 00:00:00","price":5700}]
 

Я хотел бы использовать этот массив следующим образом

 @foreach($itemArray as $item)
{{$item["date"] }}
@endforeach
 

чтобы я мог упорядочить все «даты» в своем html-файле blade.

Есть ли кто-нибудь, кто знает, как получить дату только из этого JSON? массив?

Комментарии:

1. самый простой способ-просто декодировать json в массив с помощью json_decode($items, true); , чтобы вы получили массив этого json

2. Просто в качестве примечания, если вы переключитесь на конструктор запросов, а не используете необработанный SQL-запрос, который затем можно использовать ->pluck('date') для получения массива только дат из результирующего набора, например DB::table('mytable')->pluck('date') , получите все даты из этой таблицы. Это также сделает ваш код намного более читабельным

Ответ №1:

Попробуйте это

 @foreach($itemArray as $item)
{{$item->date }}
@endforeach
 

Ответ №2:

Если вместо этого вы используете Красноречивый, вы можете добавить это в свою модель:

 /**
 * The attributes that should be cast.
 *
 * @var array
 */
protected $casts = [
    'itemArray' => 'array',
];
 

Затем при доступе itemArray вы получите массив. Когда вы запишете его в виде массива, он преобразует его в JSON, чтобы сохранить для вас.

См. раздел Приведение атрибутов