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

Patricia Arquette
Lepaskan: 2024-10-26 04:29:31
asal
125 orang telah melayarinya

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">CONCAT(
  'ifnull(SUM(case when location_code = ''',
  location_code ,
  ''' then quantity end),0) AS `',
  location_code , '`'
)
Salin selepas log masuk

) 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');
Salin selepas log masuk

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();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!