Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Memilih dengan Cekap daripada Subkueri Menggunakan Pembina Pertanyaan Laravel?

Bagaimanakah Saya Boleh Memilih dengan Cekap daripada Subkueri Menggunakan Pembina Pertanyaan Laravel?

Linda Hamilton
Lepaskan: 2025-01-12 09:28:41
asal
783 orang telah melayarinya

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

Pembina pertanyaan Laravel dengan cekap mengendalikan subkueri

Apabila menggunakan Eloquent ORM untuk mendapatkan semula data daripada subkueri, pembangun sering menggunakan gabungan toSql() dan pertanyaan asli. Walaupun pendekatan ini berfungsi, ia tidak cukup intuitif. Penyelesaian yang lebih cekap disediakan di sini:

Sebagai contoh, untuk mengekstrak kiraan hasil daripada subkueri berikut:

<code class="language-sql">SELECT COUNT(*) 
FROM (
  SELECT * 
  FROM abc 
  GROUP BY col1
) AS a;</code>
Salin selepas log masuk

Laravel membolehkan kami menggabungkan pertanyaan asli ke dalam pertanyaan Eloquent menggunakan mergeBindings. Mula-mula, kami mencipta contoh Eloquent Builder untuk subkueri:

<code class="language-php">$sub = Abc::where(..)->groupBy(..);</code>
Salin selepas log masuk

Kami kemudian menggunakan DB::table untuk mencipta jadual baharu yang merujuk subquery dan secara manual menetapkan pengikatan yang sepadan:

<code class="language-php">$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
    ->mergeBindings($sub->getQuery()) // 获取底层查询构造器
    ->count();</code>
Salin selepas log masuk

Pendekatan ini memastikan bahawa pengikatan yang betul digunakan pada pertanyaan yang digabungkan untuk mendapatkan hasil yang kita inginkan tanpa memerlukan manipulasi rentetan manual.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh 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