Bagaimana untuk Menerjemahkan Penyata MySQL Kompleks dengan SEDIAKAN, MELAKSANAKAN, dan MENYERAH PERUNTUKAN ke dalam Laravel Eloquent?

Barbara Streisand
Lepaskan: 2024-10-26 14:33:31
asal
904 orang telah melayarinya

How to Translate Complex MySQL Statements with PREPARE, EXECUTE, and DEALLOCATE into Laravel Eloquent?

Menterjemah Penyata MySQL Kompleks ke dalam Laravel Eloquent

Laravel Eloquent menyediakan mekanisme yang elegan untuk melaksanakan pertanyaan SQL menggunakan kod PHP ekspresif. Walau bagaimanapun, menukar pertanyaan MySQL berbilang pernyataan yang kompleks boleh menakutkan. Artikel ini membimbing anda melalui mengubah pertanyaan sedemikian kepada Eloquent, khususnya menangani cabaran yang dikemukakan oleh pernyataan seperti SEDIAKAN, LAKSANAKAN, TETAPKAN dan NYATA PERUNTUKAN.

Pendekatan Penukaran Pertanyaan

Untuk menukar pertanyaan MySQL yang disediakan, kami kebanyakannya akan menggunakan pertanyaan mentah dalam Eloquent. Berikut ialah pecahan:

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

Menukar ini kepada kod Eloquent, kita dapat:

$result = DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();
$sql = DB::selectOne('select @sql')->{'@sql'};
$results = ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity'))->selectRaw($sql)->groupBy('item_number')->get();
Salin selepas log masuk

Pendekatan ini menggunakan satu siri pertanyaan mentah untuk mencapai hasil yang diinginkan. Pertanyaan awal menggabungkan SQL yang dikehendaki ke dalam pembolehubah pengguna @sql. Selepas itu, PHP mendapatkan semula pembolehubah ini menggunakan pertanyaan berasingan dan kemudian membina pertanyaan Eloquent untuk melaksanakan pernyataan SQL akhir, yang termasuk SQL yang digabungkan.

Atas ialah kandungan terperinci Bagaimana untuk Menerjemahkan Penyata MySQL Kompleks dengan SEDIAKAN, MELAKSANAKAN, dan MENYERAH PERUNTUKAN ke dalam 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan