Laravel 5.2 plusieurs modèle save()
J'ai besoin de stocker exactement trois pages à la fois via le formulaire. Je souhaiterais enregistrer de la même manière que le modèle méthode save (), parce que cela va automatiquement mettre à jour l'enregistrement des horodatages.
Comment le faire pour plusieurs dossiers à la fois?
Mon Modèle de page:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Page extends Model{
protected $table = 'simple_pages';
}
Mon code:
public function createPages(Request $request){ //I use Page at the top
$data = [
[
'title'=> $request->first,
'content'=> $request->firstCont
],[
'title'=> $request->second,
'content'=> $request->secondCont
][
'title'=> $request->third,
'content'=> $request->thirdCont
]
];
Page::unguard();
$pages = new Page($data);
$pages->save(); //Something like this would be amazing
Page::reguard();
}
Note: je suis fortement contre la création de plusieurs instances du modèle de la Page, et ensuite une Boucle pour enregistrer chaque individualy. Aussi, je ne veux pas utiliser DB insérer, car il ne va pas mettre à jour l'enregistrement des horodateurs automatiquement.
Je sais que c'est une vieille question, mais la solution est
Page::insert($data)
. Voir cette réponse: stackoverflow.com/a/29723968/172790OriginalL'auteur Fusion | 2016-04-05
Vous devez vous connecter pour publier un commentaire.
Après de longues long de la recherche comme je l'ai trouvé ceci:
Oui, c'est Itération, mais regarde comme il n'y a pas d'autres méthodes comment faire pour enregistrer plusieurs modèles. La seule alternative est d'utiliser
DB::insert()
, mais être conscient de ne pas avoir automatiquement mis à jour horodateurs.Aussi, si vous êtes prêt à avoir trop éloquent modèles pour enregistrer, enregistrer par morceaux en raison de possibles problèmes de mémoire (ou de les pousser dans
Queue
).OriginalL'auteur Fusion
Si vous lisez le manuel La Mesure De Masse.
Mais si vos colonnes ne sont pas énumérées à l'intérieur de
protected $fillable = []
il l'habitude de travailler. Si vous avez défini$fillable
et vos tableaux sont définis, vous devez vous assurer que vos valeurs sont en fait des chaînes de caractères et non pas des tableaux. c'est à dire$request->first
et$request->firstCont
J'ai utilisé le modèle unguard() et reguard() méthodes de model. Par conséquent, l'surveillé/remplir en ligne ne devrait pas être un problème ici (ou est-il? - Si ce serait un Problème, Laravel jeter de masse exception). Je suis sûr à 100%, sur le contenu de mes demandes. Récemment, j'ai vérifié auprès de la dd(). Tous d'entre eux sont des chaînes de caractères.
vrai
Unguard
ferait$fillable
hors de propos, raté. Regarde créer il va à travers les __construct de remplissage Peut-être que vous pouvez déboguer un peu?mal prendre un coup d'oeil sur ce, merci.
OriginalL'auteur ash
Voici la meilleure solution que j'ai trouvé pour mettre en œuvre
User::create([array of multiple user detail arrays])
à éviter la nécessité de s'exécute autant de requêtes que vous avez entrées pour ajouter
Permettre Éloquent pour enregistrer plusieurs dossiers à la fois
OriginalL'auteur Mahmoud Nassar
devrait résoudre votre problème
OriginalL'auteur Julian