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
Barbara StreisandOriginal
2024-10-28 12:55:02546Durchsuche

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>

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>

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!

Stellungnahme:
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