Heim  >  Artikel  >  Datenbank  >  Wie kann ich Insert...Select-Anweisungen in Laravel effizient erstellen?

Wie kann ich Insert...Select-Anweisungen in Laravel effizient erstellen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-02 06:43:02769Durchsuche

How can I create Insert...Select statements in Laravel efficiently?

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!

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