#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);
, чтобы вы получили массив этого json2. Просто в качестве примечания, если вы переключитесь на конструктор запросов, а не используете необработанный 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, чтобы сохранить для вас.
См. раздел Приведение атрибутов