Heim  >  Artikel  >  Datenbank  >  Wie erstelle ich Insert...Select-Anweisungen mit Laravel: Eloquent- und Query Builder-Lösungen?

Wie erstelle ich Insert...Select-Anweisungen mit Laravel: Eloquent- und Query Builder-Lösungen?

Susan Sarandon
Susan SarandonOriginal
2024-11-01 02:20:28325Durchsuche

How to Create Insert...Select Statements with Laravel: Eloquent and Query Builder Solutions?

Einfügung erstellen... Anweisungen in Laravel auswählen

F: Wie erstelle ich eine Einfügung... Anweisung mit Laravel's Eloquent ORM oder Abfragen auswählen? Ich habe Schwierigkeiten, die folgende SQL-Syntax zu konvertieren:

<code class="sql">Insert into Demand (Login, Name, ApptTime, Phone, Physician, Location, FormatName, FormatDate, FormatTime, ApptDate, FormatPhone, cellphone)
Select Login, Name, ApptTime, Phone, Physician, Location, FormatName, FormatDate, FormatTime, ApptDate, FormatPhone, cellphone from " . [dbname] . "
    Where " . $where_statement</code>

A: Während es in Laravel in den meisten Versionen keinen direkten Ein-Abfrage-Ansatz gibt, gibt es alternative Methoden dazu Erzielen Sie ein ähnliches Ergebnis:

Methode 1:Verwenden von Raw SQL und Bindungsparametern

<code class="php">$select = User::where(...)->where(...)->select(['email', 'moneyOwing']);
$bindings = $select->getBindings();

$insertQuery = 'INSERT into user_debt_collection (email, dinero) ' . $select->toSql();

DB::insert($insertQuery, $bindings);</code>

Methode 2:Verwenden von insertUsing() (Laravel 5.7 und höher)

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

Hinweis: Mit diesen Methoden können Sie die Bindungen der vorhandenen SELECT-Anweisung wiederverwenden und die INSERT-Anweisung separat ausführen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich Insert...Select-Anweisungen mit Laravel: Eloquent- und Query Builder-Lösungen?. 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