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.

War es hilfreich?

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

tun können generasacodicetagpre.

Die Idee ist, erstellt_at und aktualisiert auf ganzes Array hinzuzufügen, bevor Sie einfügen

tun

Fü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)

generasacodicetagpre.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top