Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich eine MySQL-Abfrage mit mehreren Anweisungen in Laravel Eloquent konvertieren?

Wie kann ich eine MySQL-Abfrage mit mehreren Anweisungen in Laravel Eloquent konvertieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 04:29:31125Durchsuche

How can I convert a MySQL multi-statement query to Laravel Eloquent?

Konvertieren einer MySQL-Multi-Statement-Abfrage in Laravel Eloquent

Betrachten Sie die folgende MySQL-Abfrage:

SELECT <br>GROUP_CONCAT(DISTINCT</p>
<pre class="brush:php;toolbar:false">CONCAT(
  'ifnull(SUM(case when location_code = ''',
  location_code ,
  ''' then quantity end),0) AS `',
  location_code , '`'
)

) INTO @sql
FROM
item_details;
SET @sql = CONCAT('SELECT item_number,SUM(quantity) as „total_quantity“, ', @sql, '

              FROM item_details
               GROUP BY item_number');

PREPARE stmt FROM @sql;
EXECUTE stmt;

DEALLOCATE PREPARE stmt;

Die Herausforderung besteht darin, diese Abfrage in Laravel Eloquent umzuwandeln, insbesondere unter Berücksichtigung der verschiedenen Anweisungen: PREPARE, EXECUTE, SET und DEALLOCATE.

Lösung:

Die Konvertierung weitgehend beinhaltet Rohabfragen:

DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();<br> DB::statement('SET @sql = CONCAT(...)');<br>DB::statement('PREPARE stmt FROM @sql');<br>DB::statement('EXECUTE stmt'); <br>DB::statement('DEALLOCATE PREPARE stmt');<br>

Hier ist eine detailliertere Implementierung:

DB::table( 'item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();<br>$sql = DB::selectOne('select @sql')->{' @sql'};<br>ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity'))</p>
<pre class="brush:php;toolbar:false">->selectRaw($sql)
->groupBy('item_number')
->get();

Dieser Ansatz verwaltet effektiv die Konvertierung von der ursprünglichen MySQL-Abfrage zu Laravel Eloquent und nutzt dabei eine Kombination aus Rohabfragen und Eloquent-Methoden.

Das obige ist der detaillierte Inhalt vonWie kann ich eine MySQL-Abfrage mit mehreren Anweisungen in Laravel Eloquent konvertieren?. 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