Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih dengan Cekap daripada Subkueri Menggunakan Pembina Pertanyaan Laravel?

Bagaimana untuk Memilih dengan Cekap daripada Subkueri Menggunakan Pembina Pertanyaan Laravel?

Linda Hamilton
Lepaskan: 2025-01-12 07:08:43
asal
274 orang telah melayarinya

How to Efficiently Select from Subqueries Using Laravel's Query Builder?

Pilih data 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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