Обновление Laravel - путь к загруженному файлу изображения не сохраняется в базе данных - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть таблица с несколькими полями, как показано ниже.

Image Fields

При обновлении формы только large_imageполе обновлено, thumbnail_image не обновлено.

Моя форма

<form action="/update', $id)}}" enctype="multipart/form-data" method="post" files="true">
<input type="text" name="name">  
<input type="file" name="large_image" multiple="false" accept="image/x-png, image/jpeg">
<input type="file" name="thumb_image" multiple="false" accept="image/x-png, image/jpeg">
<input type="submit">

Модель

class Item extends Model {
protected $fillable = ['name', 'large_image', 'thumb_image'];
}

Контроллер

public function update((Request $request, $id){
$requestData = $request->all();

$item= Item::findOrFail($id);
if ($request->hasFile('large_image')) 
  {
    $fileName = $request->file('large_image')->getClientOriginalName();
    $fileExt = $request->file('large_image')->getClientOriginalExtension();
    $fullFileName = $fileName.'_'.time().'.'.$fileExt;

    $path = public_path('images');
    Image::make($fileName)->save($path . DIRECTORY_SEPARATOR. $fullFileName);

    $requestData['large_image'] = "images/{$fullFileName}";
    }



    if ($request->hasFile('thumb_image')) 
    {
        $file = $request->file('thumb_image');

        {
            $file_thumb = $request->file('thumb_image')->getClientOriginalName();

            $file_thumb_Ext = $request->file('thumb_image')->getClientOriginalExtension();
            $fullfile_thumb = $file_thumb.'_'.time().'.'.$filethumb_Ext;

            $path_thumb = public_path('images/thumb');

            Image::make($file)->save($path_thumb . DIRECTORY_SEPARATOR. $fullfile_thumb);
        }
        $requestData['thumb_image'] = "images/thumb/{$fullfile_thumb}";

    }


   $item->update($requestData);
}

Что мне здесь не хватает?Но оба изображения загружены, и пути к ним записываются в базу данных в методе создания.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Модель

Заменить thumb_image на thumbnail_image , поскольку у вас есть имя столбца втаблица thumbnail_image

class Item extends Model {
   protected $fillable = ['name', 'large_image', 'thumbnail_image'];
}

Контроллер

То же самое в контроллере заменяет значение ключа thumb_image от thumbnail_image , поскольку у вас есть имя столбца в таблице thumbnail_image

Заменить

$ requestData ['thumb_image']

от

$ requestData ['thumbnail_image']

public function update((Request $request, $id){
$requestData = $request->all();

$item= Item::findOrFail($id);
if ($request->hasFile('large_image')) 
  {
    $fileName = $request->file('large_image')->getClientOriginalName();
    $fileExt = $request->file('large_image')->getClientOriginalExtension();
    $fullFileName = $fileName.'_'.time().'.'.$fileExt;

    $path = public_path('images');
    Image::make($fileName)->save($path . DIRECTORY_SEPARATOR. $fullFileName);

    $requestData['large_image'] = "images/{$fullFileName}";
    }



    if ($request->hasFile('thumb_image')) 
    {
        $file = $request->file('thumb_image');

        {
            $file_thumb = $request->file('thumb_image')->getClientOriginalName();

            $file_thumb_Ext = $request->file('thumb_image')->getClientOriginalExtension();
            $fullfile_thumb = $file_thumb.'_'.time().'.'.$filethumb_Ext;

            $path_thumb = public_path('images/thumb');

            Image::make($file)->save($path_thumb . DIRECTORY_SEPARATOR. $fullfile_thumb);
        }
        $requestData['thumbnail_image'] = "images/thumb/{$fullfile_thumb}";

    }


   $item->update($requestData);
}

Надеюсь, эта работа для вас.

0 голосов
/ 25 апреля 2018

Ваша модель:

class Item extends Model {
    protected $fillable = ['name', 'large_image', 'thumb_image'];
}

Посмотрите сейчас на вашу базу данных, имя столбца другое, поэтому модель должна выглядеть так:

class Item extends Model {
    protected $fillable = ['name', 'large_image', 'thumbnail_image'];
}

Удачи!

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