Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Saya Boleh Menukar Pertanyaan MySQL Berbilang Pernyataan Kompleks kepada 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>
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>
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>
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!