Parfois, on a besoin de dupliquer des lignes dans une table de la base de données. Laravel a pensé à nous pour nous simplifier la tâche.
Il suffit d'utiliser la méthode replicate()
Exemple, nous avons une table carts et nous souhaitons dupliquer cette ligne. Nous allons d'abord récupérer la ligne à dupliquer.
$cart = Cart::find(1);
Maintenant, avec les 2 lignes suivantes, nous allons dupliquer :
$new_cart = $cart->replicate(); $new_cart->save();
Ce panier à une table liée contenant des références. Nous avons donc dans notre modèle Cart, une méthode references() comme ceci :
public function references() { return $this->hasMany(CartReference::class); }
Dernière étape, nous allons répliquer les références liées à la ligne précédemment dupliquée.
foreach($cart->references as $reference) { $new_cart->references()->save($reference->replicate()); }
Cours rédigé par Vincent, publié le 18/03/2021