Masseneinfügung in Laravel mit Eloquent ORM
Frage
Wie können wir Bulk-Datenbankeinfügungen in Laravel mit Eloquent ORM durchführen?
Ich möchte das in Laravel erreichen: https://stackoverflow.com/a/10615821/600516 aber ich bekomme den folgenden Fehler.
SQL-ZUSTANDS[HY093]:Ungültige Parameternummer:gemischte benannte und Positionsparameter.
Lösung
Sie können nur den generationsprotokoditicetagcode verwenden.
Beispiel:
generasacodicetagpre.Andere Tipps
Wir können die GTF-Antwort aktualisieren, um Zeitstempel einfach zu aktualisieren
$data = array(
array(
'name'=>'Coder 1', 'rep'=>'4096',
'created_at'=>date('Y-m-d H:i:s'),
'modified_at'=> date('Y-m-d H:i:s')
),
array(
'name'=>'Coder 2', 'rep'=>'2048',
'created_at'=>date('Y-m-d H:i:s'),
'modified_at'=> date('Y-m-d H:i:s')
),
//...
);
Coder::insert($data);
Update:um das Datum zu vereinfachen, können wir Kohlenstoff verwenden, wie @Pedro Moreira vorgeschlagen hat
$now = Carbon::now('utc')->toDateTimeString();
$data = array(
array(
'name'=>'Coder 1', 'rep'=>'4096',
'created_at'=> $now,
'modified_at'=> $now
),
array(
'name'=>'Coder 2', 'rep'=>'2048',
'created_at'=> $now,
'modified_at'=> $now
),
//...
);
Coder::insert($data);
AKTUALISIERUNG2:verwenden Sie für Laravel 5 updated_at
statt modified_at
$now = Carbon::now('utc')->toDateTimeString();
$data = array(
array(
'name'=>'Coder 1', 'rep'=>'4096',
'created_at'=> $now,
'updated_at'=> $now
),
array(
'name'=>'Coder 2', 'rep'=>'2048',
'created_at'=> $now,
'updated_at'=> $now
),
//...
);
Coder::insert($data);
Für jeden, der dies liest, schauen Sie sich das an createMany()
Methode.
/**
* Create a Collection of new instances of the related model.
*
* @param array $records
* @return \Illuminate\Database\Eloquent\Collection
*/
public function createMany(array $records)
{
$instances = $this->related->newCollection();
foreach ($records as $record) {
$instances->push($this->create($record));
}
return $instances;
}
So machen Sie es auf eloquente Weise,
generasacodicetagpre.Ich habe oftmals gesucht, endlich benutzerdefinierte Gattungen genutzt, wie folgt wie folgt:
generasacodicetagpre. Eloquent::insert
ist die richtige Lösung, aber es wird nicht die Zeitstempel aktualisiert, sodass Sie so etwas wie unter
Die Idee ist, erstellt_at und aktualisiert auf ganzes Array hinzuzufügen, bevor Sie einfügen
tunFür die Einfügung der Kategorie Relationsbeziehungen kam ich auf das gleiche Problem und hatte keine Ahnung, mit der Ausnahme, dass in meinem eloquenten Modell, das ich selbst () benutzte, um eine Instanz derselben Unterricht zu haben, in der es sich um mehrere Sparungen aufzunehmen und IDs zu ergreifen.
. generasacodicetagpre.ohne "$ obj= new self ()" erspart nur ein einzelner Datensatz (wenn $ obj $ dies war)
UserSubscription
ist mein modellame.
Dies wird "true" zurückgeben, wenn sie erfolgreich "false" einfügen.
Vielleicht eine Larwelle, um dieses Problem zu lösen, besteht darin, eine Sammlung zu verwenden und ein Einstecken mit dem Modell mit dem Vorteil der Zeitstempel zu verwenden.
generasacodicetagpre.edit:
Entschuldigung für mein Missverständnis.Für das Einfügen von Großeinsatz könnte dies helfen und vielleicht können Sie mit dieser guten Sämaschinen herstellen und ein bisschen optimieren.
generasacodicetagpre.Problem gelöst ............. Alter Tabelle für Migration ...
generasacodicetagpre.einfach
generasacodicetagpre.