使用Laravel更新编辑帖子时出错

时间:2017-12-03 13:19:26

标签: php laravel laravel-5

这是我的html表单

<form class="form-horizontal" action="{{action('BlogController@update',[$blog->id]) }}" method="post">
            <input name="method" type="hidden" value="patch"/>
            <div class="form-group">
            <input name="_token" type="hidden" value="{{ csrf_token() }}"/>

这是路线:

Route::patch('blog/{id}','BlogController@update');

控制器:

public function update(Request $request,$id){
    $input = $request->all();
    $blog  =findOrFail($id);
    Blog::update($input);
    //var_dump($input);
    return back();
}

你能告诉我问题在哪里吗?

5 个答案:

答案 0 :(得分:3)

在您的代码中,您写了$blog = findOrFail($id);来获取不正确的博客。你可以用

来做

$blog = Blog::findOrFail($id);

现在你有博客,你需要更新博客。因此,更新代码应为

$blog->update($input);

要使此更新方法有效,您需要在Blog模型中填写可填写的字段(要更新的字段)。

答案 1 :(得分:2)

您使用了错误的语法。做这样的事情让它发挥作用:

public function update(Request $request, $id)
{
    Blog::where('id', $id)->update($request->all());
    return back();
}

答案 2 :(得分:1)

提供您想要的名称博客

Route::patch('blog/{id}','BlogController@update')->name('blog');

您的HTML代码

<form class="form-horizontal" action="{{route('blog', $blog->id)}}" method="post">
希望这能帮到你!!

答案 3 :(得分:0)

你有很多语法问题!
试试这种方式:

表格:

 <form class="form-horizontal" 
        action="{{ route('blog.update', ['id' => $blog->id]) }}" 
           method="post">
           {{ csrf_field() }}
                <input name="_method" type="hidden" value="patch"/>
                <!-- other inputs -->
      </form>

路线:

 Route::any('blog/{id}','BlogController@update')->name('blog.update');

控制器:

public function update(Request $request, $id){
    $blog = Blog::findOrFail($id);
    $blog->update([
   'key' => 'value'
]);
 // never use $request->all() because of security issues!
    return back();
}

答案 4 :(得分:0)

                <form class="form-horizontal" action="{{route('blog.update',[$blog->id]) }}" method="post">
       {{csrf_field()}}
{{ method_field('PATCH') }}

你的路线

Route :: resource('blog','BlogController');

您的控制器

公共功能更新(Request $ request,$ id){

$blog  =Blog::findOrFail($id);
$blog->database_fieldname1=$request->value1;
$blog->database_fieldname2=$request->value2;
$blog->database_fieldname3=$request->value3;
$blog->save();
return back();

}