2017-04-25 65 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'); 
}