Указан неверный аргумент для foreach () Laravel / PHP

Laravel бросает меня: неверный аргумент указан для foreach () . В представлении я хочу отобразить первое изображение, которое я сохранил в виде поля.

маршрут

Route::get('/', function () {
    $cars = Car::orderBy('id', 'desc')->take(4)->get();
    return view('index')
    ->with('cars', $cars);
});

Посмотреть

            @foreach($cars as $car)
                <div class="col-6 col-md-3">
                    <div class="thumbnail">
                       <a class="lightbox" href="{{ url('cars', $car->id) }}">
                       @foreach(json_decode($car->items) as $item)
                           @if ($loop->first)
                               <img width="100%" height="145" src="/public/images/{{$item}}" alt="{{ $car->znacka }} {{ $car->model }}">
                           @endif
                       @endforeach
                       </a>
                       <div class="caption">
                           <a href="{{ url('cars', $car->id) }}">
                              <h3 class="uvodh">{{ $car->znacka }} {{ $car->model }}</h3>
                           </a>
                           <p class="uvodp">{{ Str::limit($car->popis, 60) }}</p>
                               <span class="uvod">{{$car->cena}}</span>
                               <p class="uvodt">
                                   <a href="{{ url('cars', $car->id) }}" class="btn btn-primary nf">Detail</a>
                               </p>
                       </div>
                    </div>
                 </div>
           @endforeach

Contoller Edit Я храню его в контроллере следующим образом

if($request->hasfile('items'))
         {
            foreach($request->file('items') as $image)
            {
                $name=$image->getClientOriginalName();
                $image->move(public_path().'/images/', $name);  
                $data[] = $name;  
            }
         }

         $car= new Car();
...
         $car->items=json_encode($data);
         $car->save();

Всего 1 ответ


Вы получаете эту ошибку, потому что json_decode по умолчанию возвращает objects и foreach нуждается в array для его json_decode .

В соответствии с официальной документацией json_decode ниже приведен синтаксис json_decode . Есть имя второго параметра

 json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] ) : mixed

ассоциативный

Когда TRUE, возвращенные объекты будут преобразованы в ассоциативные массивы.

+ Изменить

@foreach(json_decode($car->items) as $item)

в

@foreach(json_decode($car->items, true) as $item)

Есть идеи?

10000