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
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()
.
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();
}`
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'));
}
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 :)
}
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'];
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');
}
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.