Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Rekod dengan Cekap daripada Subkueri Laravel dengan GROUP BY?
Pemilihan subquery dalam pembina pertanyaan Laravel
Memilih data daripada subkueri menggunakan pembina pertanyaan Eloquent ORM boleh menjadi mencabar. Artikel ini menangani isu khusus yang dihadapi oleh pengguna yang ingin mendapatkan kiraan rekod untuk subkueri yang dibuat menggunakan GROUP BY.
Selami soalan:
Pengguna pada mulanya cuba menyelesaikan isu ini menggunakan kod berikut:
<code class="language-php">$sql = Abc::from('abc AS a') ->groupBy('col1') ->toSql(); $num = Abc::from(DB::raw($sql)) ->count(); print $num;</code>
Walaupun pendekatan ini nampak logik, ia bukanlah penyelesaian yang paling berkesan.
Penyelesaian yang elegan dan dioptimumkan:
Penyelesaian yang dicadangkan melibatkan penggunaan gabungan SQL mentah dan penggabungan ikatan:
<code class="language-php">$sub = Abc::where(..) ->groupBy(..); // Eloquent Builder 实例 $count = DB::table(DB::raw("({$sub->toSql()}) as sub")) ->mergeBindings($sub->getQuery()) // 以正确的顺序合并绑定 ->count();</code>
Dalam penyelesaian ini, subkueri dibina menggunakan contoh Eloquent Builder dan kemudian disertakan dalam ungkapan SQL mentah. Kaedah mergeBindings()
digunakan untuk menggabungkan pengikatan subkueri dengan pengikatan pertanyaan utama. Dengan cara ini anda boleh mendapatkan semula data yang diperlukan dengan cekap daripada subquery.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Rekod dengan Cekap daripada Subkueri Laravel dengan GROUP BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!