私はシステムをクラッドしようとしています。それをコントローラーストア関数に入れると、私のコードは
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');
}
データを保存するだけで十分ですが、記事を編集して再度保存したい場合、編集関数コードは何になりますか?何も思いつきません。編集機能に同じコードを入れようとすると、更新されない新しい記事が作成されます。では、編集機能の正しいコードは何でしょうか?ありがとう
更新用のリソースコントローラメソッドはupdate()
です。 update()
の雄弁なメソッドもupdate()
なので、これを行うことができます:
_public function update(Request $request, $id)
{
Article::where('id', $id)->update($request->all());
return redirect('/articles');
}
_
また、データのupdateOrCreate()
メソッドの更新と更新の両方に同じコントローラーとEloquentメソッドを使用できます。
このようにオブジェクト形式として更新することもできます。
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();
}`
public function update(Request $request, $id) {
Article::where('id', $id)->update($request->except(['_token']));
return redirect('/articles');
}
//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'));
}
_php artisan make:model -a Artical
_を使用して特定のモデルのリソースコントローラーを自動生成する場合、以下のようなupdate()
関数があります。
_public function update(Request $request, Article $article)
{
//
}
_
ここで、Lavarelは自動的にArticle
オブジェクトを_$article
_にフェッチします。したがって、以下のように_$request
_データを保存できます。
_public function update(Request $request, Article $article)
{
$article->update($request->all());
return redirect()->route('article.index'); // or your desired location :)
}
_
あなたは使うことができます
public function update(Request $request, $id)
{
$article = Article::find($id);
$article->fill($request->all());
}
モデルの$ fillable配列に列属性を追加する必要があります
protected $fillable = ['user_id', 'content', 'live'];
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');
}
まず、作成と更新の2つのアクションを正しく実行しているので、laravelの実際のクラッドでは、これら2つを別々のロジックメソッド[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
に設定し、適切なクラッドリソースを実行します。
作成ロジックを更新ロジックから分離することをお勧めします。一意のデータの種類がある場合は、新しいリソースを作成する前にその値を検証する必要があります。