Verwenden Sie Laravel Eloquent/Fluent, um mehrere Datenzeilen stapelweise einzufügen
In diesem Beispiel müssen Abfrageergebnisdaten in eine andere Tabelle eingefügt und die Ergebnisse in ein bestimmtes Format konvertiert werden. Die größte Herausforderung besteht darin, mögliche Änderungen in der Anzahl der Zeilen in den Ergebnissen zu bewältigen.
Verwenden Sie die Batch-Einfügefunktion von Laravel
Glücklicherweise bieten Laravel’s Eloquent und Query Builder praktische Masseneinfügungsmethoden. Mit diesen Methoden können Sie die gewünschten Ergebnisse erzielen:
Eloquente Methode:
<code class="language-php"> $insertData = collect($query->get())->map(function ($row) { return [ 'user_id' => $row->user_id, 'subject_id' => $row->subject_id, ]; }); Model::insert($insertData->toArray());</code>
Abfrageerstellungsmethode:
<code class="language-php"> $insertData = collect($query->get())->map(function ($row) { return [ 'user_id' => $row->user_id, 'subject_id' => $row->subject_id, ]; }); DB::table('new_table')->insert($insertData->toArray());</code>
In beiden Fällen enthält die Variable $insertData
die konvertierten Daten im erforderlichen Format. Die insert
-Methode verarbeitet Masseneinfügungsvorgänge in die angegebene Tabelle. Beachten Sie, dass Sie insert
mit der Methode $insertData
in ein Array konvertieren müssen, um sicherzustellen, dass die Methode ->toArray()
die Daten korrekt verarbeitet.
Das obige ist der detaillierte Inhalt vonWie führt man mit Laravel Eloquent und Query Builder effizient Masseneinfügungen durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!