web-dev-qa-db-fra.com

quelle est la méthode de mise à jour dans laravel 5.4 crud?

j'essaie juste de brouiller le système. pour cela dans la fonction de magasin de contrôleur mon code est

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

il suffit de stocker des données, mais lorsque je veux éditer un article et sauvegarder à nouveau, quel sera mon code de fonction d'édition? Je n'ai aucune idée. J'essaie le même code dans la fonction d'édition et crée un nouvel article non mis à jour. alors quel sera le bon code pour la fonction d'édition? Merci

4
Masum

La méthode du contrôleur de ressources pour la mise à jour est update(). La méthode éloquente pour update() est également update(), vous pouvez donc faire ceci:

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

Vous pouvez également utiliser le même contrôleur et la même méthode Eloquent pour les méthodes crerate et update data updateOrCreate().

6
Alexey Mezenin

Vous pouvez également le mettre à jour en tant que format d'objet, comme ceci.

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

Si vous générez automatiquement un contrôleur de ressources pour un modèle spécifique à l'aide de php artisan make:model -a Artical, vous disposez de la fonction update() comme ci-dessous:

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

Ici, Lavarel récupère automatiquement l’objet Article dans $article. Ainsi, vous pouvez enregistrer les données $request comme ci-dessous:

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

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

vous pouvez utiliser

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

assurez-vous d'ajouter vos attributs de colonne à un tableau remplissable dans votre modèle.

 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

Premièrement, vous avez deux actions correctes, la création et la mise à jour. Ainsi, pour un vrai plaisir dans laravel, vous pouvez avoir ces deux méthodes logiques séparées dans les méthodes store() et 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
}

Vous configurez vos itinéraires avec POST pour créer et PUT pour mettre à jour votre ressource crud.

Je vous recommande de séparer la logique de création de la logique de mise à jour et si vous avez une sorte de données uniques, vous devez alors valider sa valeur avant de créer une nouvelle ressource.

0
Adriano Rosa