Heim > Artikel > Backend-Entwicklung > Wie kann ich eine komplexe MySQL-Abfrage mit mehreren Anweisungen in Laravel Eloquent konvertieren?
Konvertieren einer komplexen MySQL-Abfrage mit mehreren Anweisungen in Laravel Eloquent
Diese Abfrage enthält eine Reihe von Anweisungen, einschließlich GROUP_CONCAT, SET, PREPARE, EXECUTE und DEALLOCATE, deren Konvertierung in Laravel Eloquent überwältigend sein kann. Lassen Sie es uns Schritt für Schritt aufschlüsseln.
Erstens unterstützt Laravel keine vorbereiteten Anweisungen wie PREPARE und EXECUTE. Wir können jedoch Rohabfragen verwenden, um jede dieser Anweisungen einzeln auszuführen.
<code class="php">DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get(); DB::statement('SET @sql = CONCAT(...)'); DB::statement('DEALLOCATE PREPARE stmt');</code>
Als nächstes müssen wir das Ergebnis der SET-Anweisung abrufen. Da es sich um einen Skalarwert handelt, können wir ihn mit selectOne() abrufen.
<code class="php">$sql = DB::selectOne('select @sql')->{'@sql'};</code>
Schließlich können wir den abgerufenen SQL-String in unserer Eloquent-Abfrage verwenden.
<code class="php">ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity')) ->selectRaw($sql) ->groupBy('item_number') ->get();</code>
Dieser Code führt die MySQL-Abfrage mit mehreren Anweisungen unter Verwendung von Rohabfragen aus und ruft die erwarteten Ergebnisse ab.
Das obige ist der detaillierte Inhalt vonWie kann ich eine komplexe MySQL-Abfrage mit mehreren Anweisungen in Laravel Eloquent konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!