Heim > Datenbank > MySQL-Tutorial > Wie füge ich Daten effizient mit „Einfügen ... Auswählen' in Laravel ein?

Wie füge ich Daten effizient mit „Einfügen ... Auswählen' in Laravel ein?

Barbara Streisand
Freigeben: 2024-10-28 12:55:02
Original
545 Leute haben es durchsucht

How to Efficiently Insert Data Using `Insert... Select` in Laravel?

Effizientes Einfügen von Daten mit Einfügen... Auswählen in Laravel

Abfragekonvertierung für Laravel

Um die bereitgestellte SQL-Abfrage in einen Laravel-Ausdruck zu konvertieren, ist es wichtig zu verstehen, dass Laravel 5.6 und frühere Versionen keine direkte Unterstützung für Insert... Select-Operationen haben. Dies bedeutet, dass eine direkte Konvertierung nicht möglich ist.

Alternativer Ansatz in Laravel

Es gibt jedoch einen Workaround, mit dem Sie das gewünschte Ergebnis erzielen können. Anstatt eine einzelne Abfrage zu versuchen, können Sie sie in zwei Schritte aufteilen:

  1. Verwenden Sie den QueryBuilder von Laravel, um eine Select-Abfrage zu erstellen, die die erforderlichen Daten abruft. Verwenden Sie die Methode getBindings(), um die Bindungsparameter zu extrahieren.
  2. Verwenden Sie eine unformatierte SQL-Abfrage, um die Einfügung mit den in Schritt 1 abgerufenen Daten durchzuführen. Binden Sie die von getBindings() erhaltenen Bindungsparameter.

Beispielcode:

<code class="php">// Step 1: Generate the Select query
$select = User::where(...)
                  ->where(...)
                  ->whereIn(...)
                  ->select(array('email','moneyOwing'));

// Step 2: Get binding parameters
$bindings = $select->getBindings();

// Step 3: Construct raw SQL insert query
$insertQuery = 'INSERT into user_debt_collection (email,dinero) '
                . $select->toSql();

// Step 4: Execute the insert
\DB::insert($insertQuery, $bindings);</code>
Nach dem Login kopieren

Laravel 5.7 Update

Laravel 5.7 führte die Methode ->insertUsing() ein und stellt bereit direkte Unterstützung für Einfügen... Auswählen. Das vorherige Beispiel würde vereinfacht werden zu:

<code class="php">DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie füge ich Daten effizient mit „Einfügen ... Auswählen' in Laravel ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage