2017-04-25 6 views
3

J'essaie juste de crud système. pour cela en fonction de stockage du contrôleur mon code estquelle est la méthode de mise à jour dans 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'); 
} 

il suffit de stocker des données, mais quand je veux modifier l'article & enregistrer de nouveau alors ce sera mon code fonction d'édition? Je n'ai aucune idée. J'essaie même code dans la fonction d'édition & il crée un nouvel article ne pas mettre à jour. Alors, quel sera le bon code pour la fonction d'édition? merci

+1

Bienvenue dans StackOverflow! Nous serons heureux de vous aider si vous êtes bloqué sur un problème de programmation spécifique, mais nous ne sommes pas ici pour écrire du code gratuit pour vous. S'il vous plaît voir [** Comment puis-je poser une bonne question? **] (https://stackoverflow.com/help/how-to-ask) et [** Quels sujets puis-je poser ici? **] (https : //stackoverflow.com/help/on-topic). –

Répondre

3

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

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éthode pour les Eloquent données crerate et mettre à jour la méthode updateOrCreate().

+0

@Masum vous utilisez un code complètement différent du code que j'ai montré. La méthode 'fill()' ne met pas à jour les données, elle remplit simplement les attributs. Utilisez '$ article-> save();' après 'fill()' ou utilisez 'update()' comme je l'ai montré. –

+0

il shwos cette erreur SQLSTATE [42S22]: Colonne Introuvable: 1054 Unknown column '_method' dans 'liste des champs' (SQL: mise à jour '' articles' mettre _method' = PUT, '_token' = l1ZyYVMAQJCAU6mzVXFEYqt2hUSQyAkqws9804aj,' content' = sadfasdf, 'post_on' = 2017-04-25T03: 43,' Create_Post' = Soumettre, 'updated_at' = 2017-04-25 15:48:20 où' id' = 13) – Masum

+0

par la méthode de remplissage, il ne montre aucun erreurs mais il ne met pas à jour les données – Masum

1

vous pouvez utiliser

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

que vous devez ajouter votre colonne attributs à un tableau remplissable $ dans votre modèle

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

Vous pouvez également mettre à jour comme format d'objet comme celui-ci.

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

Tout d'abord, vous avez deux bonnes actions, la création et la mise à jour, donc pour un vrai crud dans Laravel vous pourriez avoir ces deux dans une des méthodes logiques séparées les 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 puis vous faire une ressource crud appropriée.

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

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