web-dev-qa-db-ja.com

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');
}

データを保存するだけで十分ですが、記事を編集して再度保存したい場合、編集関数コードは何になりますか?何も思いつきません。編集機能に同じコードを入れようとすると、更新されない新しい記事が作成されます。では、編集機能の正しいコードは何でしょうか?ありがとう

4
Masum

更新用のリソースコントローラメソッドはupdate()です。 update()の雄弁なメソッドもupdate()なので、これを行うことができます:

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

また、データのupdateOrCreate()メソッドの更新と更新の両方に同じコントローラーとEloquentメソッドを使用できます。

6
Alexey Mezenin

このようにオブジェクト形式として更新することもできます。

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();
}`
1
Sami
public function update(Request $request, $id) {
    Article::where('id', $id)->update($request->except(['_token']));
    return redirect('/articles');
}
1
Abu Sufian
//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'));
}
1
user9913328

_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'];
1
Mortada Jafar
    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');
    }
0
rashedcs

まず、作成と更新の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に設定し、適切なクラッドリソースを実行します。

作成ロジックを更新ロジックから分離することをお勧めします。一意のデータの種類がある場合は、新しいリソースを作成する前にその値を検証する必要があります。

0
Adriano Rosa