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
Linda Hamiltonasal
2025-01-12 07:08:43275semak imbas

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>

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!

Kenyataan:
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