Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih dengan Cekap daripada Subkueri Menggunakan Pembina Pertanyaan Laravel?
Soalan: Mendapatkan semula nilai agregat kiraan daripada subkueri SQL menggunakan Eloquent ORM.
Kaedah awal:
<code class="language-php">$sql = Abc::from('abc AS a') ->groupBy('col1') ->toSql(); $num = Abc::from(\DB::raw($sql)) ->count();</code>
Pendekatan ini memerlukan penjanaan manual SQL subquery, yang tidak sesuai.
Penyelesaian terbaik:
Pembina pertanyaan Laravel pada masa ini tidak mempunyai kaedah khusus untuk membuat subkueri dalam klausa FROM. Pernyataan mentah mesti digunakan secara manual, dengan pengurusan pengikatan yang betul:
<code class="language-php">// 定义子查询 $sub = Abc::where(...)->groupBy(...); // Eloquent Builder 实例 // 创建主查询 $count = DB::table(DB::raw("({$sub->toSql()}) AS sub")) ->mergeBindings($sub->getQuery()) // 正确合并绑定 ->count();</code>
Nota: Ikatan mesti digabungkan dalam susunan yang betul. Jika syarat tambahan ditambah selepas digabungkan, pesanan mesti diselaraskan untuk memastikan pengikatan yang betul.
Atas ialah kandungan terperinci Bagaimana untuk Memilih dengan Cekap daripada Subkueri Menggunakan Pembina Pertanyaan Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!