Как извлечь данные массива с одним полем из базы данных и разделить их — используя laravel, PHP

#php #mysql #arrays #laravel #laravel-6

#php #mysql #массивы #laravel #laravel-6

Вопрос:

Я пытаюсь загрузить несколько изображений для своего продукта и сохранить имена этих изображений в базе данных в виде массива. Мой код работает следующим образом-

 $images = $request->file('images');      

if (isset($images)) {
  foreach($images as $image){
    $imagename = $slug.'-'.$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
    if (!file_exists('uploads/product/images')) {
       mkdir('uploads/product/images', 0777, true);
    }
      $image->move('uploads/product/images', $imagename);
      $data[] = $imagename;
    }
            
  }else{
     $data[] = 'default.png';
  }

  $product = new Product();
  $product->images = json_encode($data);

  

И данные, хранящиеся внутри images поля, такие как-

 ["jeans-2020-08-13-5f352f18b30a4.jpg","jeans-2020-08-13-5f352f18b36a0.jpg","jeans-2020-08-13-5f352f18b3a2c.jpg"]
  

** И проблема в том, как я могу отделить это имя изображения, чтобы показывать изображения в Laravel Blade? **
ИЛИ Подскажите мне, есть ли другой способ загрузить несколько изображений или несколько значений в laravel-6

Ответ №1:

Вам нужно десериализовать имена изображений, а затем выполнить цикл по ним:

 @foreach(json_decode($product->images) ?? [] as $image)
    <img src="uploads/product/images/{{ $image }}">
@endforeach