Bagaimanakah Saya Boleh Menukar Pertanyaan MySQL Berbilang Pernyataan Kompleks kepada Laravel Eloquent?

Barbara Streisand
Lepaskan: 2024-10-30 13:48:02
asal
503 orang telah melayarinya

How Can I Convert a Complex Multi-Statement MySQL Query to Laravel Eloquent?

Menukar Pertanyaan MySQL Berbilang Pernyataan Kompleks kepada Laravel Fasih

Pertanyaan ini mengandungi satu siri pernyataan, termasuk GROUP_CONCAT, SET, PREPARE, LAKSANAKAN, dan DEALLOCATE, yang boleh menjadi sukar untuk ditukar kepada Laravel Eloquent. Mari kita pecahkan langkah demi langkah.

Pertama, Laravel tidak menyokong kenyataan yang disediakan seperti SEDIAKAN dan LAKSANAKAN. Walau bagaimanapun, kita boleh menggunakan pertanyaan mentah untuk melaksanakan setiap pernyataan ini secara individu.

<code class="php">DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();
DB::statement('SET @sql = CONCAT(...)');
DB::statement('DEALLOCATE PREPARE stmt');</code>
Salin selepas log masuk

Seterusnya, kita perlu mendapatkan semula hasil penyata SET. Memandangkan ia adalah nilai skalar, kami boleh menggunakan selectOne() untuk mengambilnya.

<code class="php">$sql = DB::selectOne('select @sql')->{'@sql'};</code>
Salin selepas log masuk

Akhir sekali, kami boleh menggunakan rentetan SQL yang diambil dalam pertanyaan Eloquent kami.

<code class="php">ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity'))
    ->selectRaw($sql)
    ->groupBy('item_number')
    ->get();</code>
Salin selepas log masuk

Kod ini akan melaksanakan pertanyaan MySQL berbilang pernyataan menggunakan pertanyaan mentah dan mendapatkan hasil yang diharapkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Pertanyaan MySQL Berbilang Pernyataan Kompleks 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
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!