Erstellen von Insert...Select-Anweisungen in Laravel
Im Bereich der Datenbankmanipulation führt die Insert...Select-Anweisung einen Dual aus Funktion zum Einfügen von Daten in eine Tabelle bei gleichzeitigem Verweisen auf Daten aus einer anderen Tabelle. Das robuste Eloquent ORM und der Query Builder von Laravel bieten effiziente Möglichkeiten zum Erstellen solcher Abfragen.
Abfragekonvertierung mit Laravel
Um die bereitgestellte SQL-Abfrage in Laravel zu konvertieren, können wir keine verwenden aufgrund von Einschränkungen in der aktuellen Version von Laravel eine einzige einheitliche Abfrage. Wir können jedoch die gewünschte Funktionalität erreichen, indem wir die Abfrage in zwei Teile aufteilen:
Teil 1: Erstellen einer Laravel Select-Abfrage
Beginnen Sie mit der Erstellung einer Laravel Select-Abfrage mit der Eloquent ORM oder Query Builder. Diese Abfrage sollte dem ausgewählten Teil Ihrer ursprünglichen SQL-Abfrage ähneln:
<code class="php">$select = User::where(...) ->where(...) ->whereIn(...) ->select(['email', 'moneyOwing']);</code>
Teil 2: Daten mit dem Laravel Query Builder einfügen
Jetzt müssen Sie Laravel verwenden Query Builder zum Erstellen des Einfügeteils Ihrer Abfrage.
<code class="php">$insertQuery = 'INSERT into user_debt_collection (email, dinero) ' . $select->toSql(); \DB::insert($insertQuery, $select->getBindings());</code>
Im obigen Code erstellen wir die Einfügeabfrage manuell mit $insertQuery und verwenden dann DB::insert ()um die Abfrage auszuführen und ihr sowohl die Abfragezeichenfolge als auch die Abfragebindungen bereitzustellen.
Update für Laravel 5.7
Laravel 5.7.17 führte das ein ->insertUsing()-Methode, die die Funktionalität der Select- und Insert-Abfragen in einer einzigen Methode kombiniert.
<code class="php">DB::table('user_debt_collection')->insertUsing(['email', 'dinero'], $select);</code>
Diese vereinfachte Methode optimiert den Prozess der Erstellung von Insert... Wählen Sie Anweisungen in Laravel aus.
Das obige ist der detaillierte Inhalt vonWie kann ich Insert...Select-Anweisungen in Laravel effizient erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!