Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menukar pertanyaan berbilang pernyataan MySQL kepada Laravel Eloquent?

Bagaimanakah saya boleh menukar pertanyaan berbilang pernyataan MySQL kepada Laravel Eloquent?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 04:29:31125semak imbas

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

Menukar MySQL Multi-Statement Query kepada Laravel Eloquent

Pertimbangkan pertanyaan MySQL berikut:

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

) KE DALAM @sql
DARI
butiran_item;
SET @sql = CONCAT('PILIH item_nombor,SUM(kuantiti) sebagai "jumlah_kuantiti", ', @sql, '

              FROM item_details
               GROUP BY item_number');

SEDIAKAN stmt DARIPADA @sql;
LAKSANAKAN stmt;

DEALTEMPAT SEDIAKAN stmt;
>

Cabarannya terletak pada menukar pertanyaan ini kepada Laravel Eloquent, terutamanya dengan mengambil kira pelbagai penyataan: SEDIAKAN, LAKSANAKAN, TETAPKAN dan DEALLOCATE.

Penyelesaian:

Penukaran sebahagian besarnya melibatkan pertanyaan mentah:

DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();

DB::statement('SET @sql = CONCAT(...)');
DB::statement('SEDIAKAN stmt DARI @sql');
DB::statement('LAKSANAKAN stmt');
DB::statement('DEALLOCATE PREPARE stmt');

Berikut ialah pelaksanaan yang lebih terperinci:

DB::table( 'item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();

$sql = DB::selectOne('select @sql')->{' @sql'};
Butiran Item::select('nombor_item', DB::raw('SUM(kuantiti) sebagai jumlah_kuantiti'))

->selectRaw($sql)
->groupBy('item_number')
->get();

Pendekatan ini mengendalikan penukaran daripada pertanyaan MySQL asal kepada Laravel Eloquent dengan berkesan, menggunakan gabungan pertanyaan mentah dan kaedah Eloquent.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar pertanyaan berbilang pernyataan MySQL kepada Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn