Как обновить изображение, используя Laravel? - PullRequest
0 голосов
/ 06 января 2020

Я хочу обновить изображение в моей базе данных, используя Laravel, но, к сожалению, изображение не обновляется. Как я могу решить эту проблему?

Контроллер

public function updateaction(Request $request, $id)
{
    $category = $request->input('select_category');
    $project_name = $request->input('product_name');

    $image = $request->file('select_file');
    $new_name = mt_rand().'.'.$image->getClientOriginalExtension();
    $image->move(public_path('projects'), $new_name);
    $updaterecord = DB::table('projects')->where(['products_id' => $id])->update([
        'project_name' => $project_name, 'category_id' => $category, 'image' => $image
    ]);

    if ($updaterecord) {
        return redirect('view_project');
    }

    return back();
}

Просмотр

<form action="{{route('project.update', $project->products_id)}}" method="POST"
      enctype="multipart/form-data">
    @csrf
    <div class="group-form">
        <select class="form-control" name="select_category" required>
            <option value="">Select Category</option>
            @foreach($categories as $category)
                <option value="{{$category->id}}" @if($project->category_id) == $category->id)  @endif>
                {{$category->category_name}}</option>
            @endforeach
        </select>
    </div>
    <br>
    <div class="group-form">
        <input type="text" class="form-control" value="{{$project->project_name}}"
               placeholder="Update Product Name" name="product_name" required>
    </div>
    <br>
    <div class="group-form">
        <input type="file" class="form-control" value="{{asset('/public/projects/'.$projects->image)}}"
               name="select_file">
    </div>
    <br>
    <div class="group-form">
        <input type="submit" class=" btn btn-primary form-control" value="UPDATE" name="Update">
    </div>
</form>

Маршрут

Route::post('project_update/{id}/update', 'AdminController@updateaction')
    ->name('project.update');

Ответы [ 2 ]

2 голосов
/ 06 января 2020

Вы пытаетесь сохранить объект UploadedFile в базу данных. Я думаю, вам нужно сохранить строку с именем файла, например, $ new_name вместо $ image.

1 голос
/ 06 января 2020

ВАША МОДЕЛЬ НЕ ОБНОВЛЯЕТ АТРИБУТ «ИЗОБРАЖЕНИЯ», ПОТОМУ ЧТО ВЫ ПРИЗНАВАЕТЕ ЕГО ОБЪЕКТ ($image) ВМЕСТО СТРОКИ ($new_name).

ПЫТАЙТЕСЬ ЗАМЕНИТЬ $image ПЕРЕМЕННЫЙ ВНУТРИ МЕТОДА UPDATE() С $new_name.

СМ.

public function updateaction(Request $request,$id)
    {     
        $category=$request->input('select_category');
        $project_name=$request->input('product_name'); 

        $image = $request->file('select_file');
        $new_name = rand() . '.' . $image->getClientOriginalExtension();
        $image->move(public_path('projects'), $new_name);            
        $updaterecord=DB::table('projects')->where(['products_id'=> $id])
        ->update(['project_name'=>$project_name,'category_id'=>$category,'image'=>$new_name]);

        if($updaterecord){
            return redirect('view_project');
        }
    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...