Как хранить несколько изображений в базе данных Laravel - PullRequest
1 голос
/ 28 июня 2019

Я пытаюсь сохранить несколько изображений в базе данных, а также показать их в представлении. У меня есть таблица продуктов и таблица изображений, которые связаны между собой, в таблице изображений у меня есть внешний ключ с именем (изображение). Пока что получаю эту ошибку "Array to string conversion"

Вот коды

Контроллер

  public function store(Request $request) 
  { 

    $formInput=$request->all();
    $image=array();
    if($files=$request->file('image')){
        foreach($files as $file){
            $name=$file->getClientOriginalName();
            $file->move('images',$name);
            $image[]=$name;

        }

    }
          product::create(array_merge($formInput,
       ['user_id' => Auth::user()->id,
       'image' => $image

    ])); 
    return redirect()->back(); 

лезвие

  <input type="file" name="image[]" multiple class="form-control">

product.php

   public function products()
 {
    return $this->belongsTo('App\Images', 'image');
  }

Images.php

   public function images()
   {
     return $this->hasMany(Product::class, 'image');
    }

1 Ответ

1 голос
/ 28 июня 2019

Насколько мне известно, в загрузке файла нет ошибок, но пока вы пытаетесь сохранить

Как это или возможно объектно-ориентированным

, это будет ошибка

  $CreateArray = array_merge($request->all(), [
    'image' => $image
                ]);

                Model::create( $CreateArray);

Итак, так как если вы загружаете несколько файлов и вы получите массив имен файлов, но вы не можете сохранить его как массив в базе данных, так что

$CreateArray = array_merge($request->all(), [
    'image' => json_encode($image)
                ]);

                Model::create( $CreateArray);

EDITED

public function store(Request $request) 
  { 

    $formInput=$request->all();
    $image=array();
    if($files=$request->file('image')){
        foreach($files as $file){
            $name=$file->getClientOriginalName();
            $file->move('images',$name);
            $image[]=$name;

        }

    }
          product::create(array_merge($formInput,
       [
'user_id' => Auth::user()->id,
        'image' => json_encode($image)

    ])); 
    return redirect()->back(); 

Надеюсь, это поможет

Пожалуйста, оставьте комментарий по любым вопросам

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