php Laravel 5.4 crud 中的更新方法是什么?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/43614815/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 02:53:02  来源:igfitidea点击:

what is the update method in laravel 5.4 crud?

phplaravelcrud

提问by Masum

i just trying to crud system. for that into controller store function my code is

我只是想 crud 系统。对于控制器存储功能,我的代码是

 public function store(Request $request)
{
    Article::create([
        'user_id' => auth()->id(),
        'content' => $request->content,
        'live' => (boolean)$request->live,
        'post_on' => $request->post_on
        ]);

    return redirect('/articles');
}

it's enough to store data, but when i want to edit article & save again then what will be my edit function code? i have no idea. i trying same code into edit function & it create new article not update. so what will be right code for edit function? thanks

存储数据就足够了,但是当我想编辑文章并再次保存时,我的编辑功能代码是什么?我不知道。我在编辑功能中尝试相同的代码,它会创建新文章而不是更新。那么编辑功能的正确代码是什么?谢谢

回答by Alexey Mezenin

Resource controller method for update is update(). Eloquent method for update()is update()too, so you can do this:

更新的资源控制器方法是update(). Eloquent 方法update()也是update()如此,所以你可以这样做:

public function update(Request $request, $id)
{
    Article::where('id', $id)->update($request->all());
    return redirect('/articles');
}

You also can use the same controller and Eloquent method for both crerate and update data updateOrCreate()method.

您还可以对创建和更新数据updateOrCreate()方法使用相同的控制器和 Eloquent方法。

回答by Mortada Jafar

you can use

您可以使用

public function update(Request $request, $id)
{
    $article = Article::find($id);
    $article->fill($request->all());
}

sure you should add Your column attributes to $fillable array in Your model

确保您应该将您的列属性添加到您的模型中的 $fillable 数组中

 protected $fillable = ['user_id', 'content', 'live'];

回答by Sami

You can also update it as object format like this.

您也可以像这样将其更新为对象格式。

public function update(Request $request, $id)
{
   $article = Article::find($id);
   $article->user_id = auth()->id();
   $article->content = $request->content;
   $article->live = (boolean)$request->live;
   $article->post_on = $request->post_on;
   $article->save();
}`

回答by Abu Sufian

public function update(Request $request, $id) {
    Article::where('id', $id)->update($request->except(['_token']));
    return redirect('/articles');
}

回答by user9913328

//route//
Route::any('/update/{id}', 'ProductController@update');

//controller//

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

 Product::find($id) - > update($product);
 return redirect('/product') - > with('message', 'Success', compact('product'));
}

回答by Mahmudul Hasan Shohag

If you auto-generate resource controller for a specific Model using php artisan make:model -a Articalthen you have the update()function like below:

如果您使用自动生成特定模型的资源控制器,php artisan make:model -a Artical那么您将拥有如下update()功能:

public function update(Request $request, Article $article)
{
    //
}

Here, Lavarel automatically fetch the Articleobject into $article. So, you can save the $requestdata like below:

在这里,Lavarel 自动将Article对象提取到$article. 因此,您可以保存如下$request数据:

public function update(Request $request, Article $article)
{
    $article->update($request->all());

    return redirect()->route('article.index'); // or your desired location :)
}

回答by rashedcs

    public function update(Request $request, $id)
    {
            $info = array('user_id' =>$request->user()->id,
              'content' => $request->content, 'live'=>$request->live);

            DB::table('article')->where('id', $id)->update($info);

            session()->flash('success', 'Update Successfully');
            return redirect('/article');
    }

回答by Adriano Rosa

First, you are having two actions right, the create and update, so for a real crud in laravel you might have these two in a separated logic methods the store()and update():

首先,您有两个正确的操作,创建和更新,因此对于 laravel 中的真正 crud,您可能将这两个操作放在单独的逻辑方法 the store()and 中update()

/**
 * This is a resource create method which is a HTTP POST.
 */
public function store(Request $request) {
     // create a new item in database
}

/**
 * This is a resource update which is a HTTP PUT METHOD.
 */
public function update(Request $request, $id) {
     // update the item in database
}

You set up your routes withPOSTfor creating and PUTto update then your doing a proper crud resource.

你设置你的路线以POST创建和PUT更新然后你做一个适当的 crud 资源。

I recommend you to separate the create logic off the update logic and if you have sort of unique data then you should validate its value before creating a new resource.

我建议您将创建逻辑与更新逻辑分开,如果您有某种独特的数据,那么您应该在创建新资源之前验证其值。