2017-04-25 73 views
3

我只是想克服系统。对于到控制器存储功能我的代码是laravel 5.4 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'); 
} 

这足以存储数据,但是当我想编辑的文章&再次保存,然后会是什么我的编辑功能的代码?我不知道。我试图编辑相同的代码功能&它创建新的文章不更新。那么编辑功能的正确代码是什么?谢谢

+1

欢迎来到StackOverflow!如果您遇到特定的编程问题,我们将很乐意为您提供帮助,但我们不在这里为您编写免费代码。请参阅[**我如何提出一个好问题?**](https://stackoverflow.com/help/how-to-ask)和[**我可以在这里询问什么主题?**](https ://stackoverflow.com/help/on-topic)。 –

回答

3

更新的资源控制器方法是update()。为update()雄辩的方法是update(),所以你可以这样做:

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

您还可以使用两种crerate和更新数据updateOrCreate()方法相同的控制器和雄辩的方法。

+0

@Masum您使用的代码与我所展示的代码完全不同。 'fill()'方法不会更新数据,它只是填充了属性。正如我所示,在'fill()'后面使用'$ article-> save();'或使用'update()'。 –

+0

it shwos this errors SQLSTATE [42S22]:未找到列:1054'字段列表'中的未知列'_method'(SQL:更新'articles'集合'_method' = PUT,'_token' = l1ZyYVMAQJCAU6mzVXFEYqt2hUSQyAkqws9804aj,'content' = sadfasdf,'post_on' = 2017-04-25T03:43,'Create_Post' = Submit,'updated_at' = 2017-04-25 15:48:20其中'id' = 13) – Masum

+0

通过填充方法它不显示任何错误但它不更新数据 – Masum

1

可以使用

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

相信你应该增加你的属性栏为$可填写阵列模型中的

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

您也可以对其进行更新这样的对象格式。

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(); 
}` 
0

首先,你有两个动作正确,创建和更新,所以在laravel一个真正的CRUD你可能有这两个在分开的逻辑方法store()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 
} 

您可以使用POST创建路线并设置PUT来更新您的路线,然后您就可以创建合适的路况资源。

我建议您将创建逻辑从更新逻辑中分离出来,如果您有独特的数据类型,那么您应该在创建新资源之前验证其值。

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