Rumah >pangkalan data >tutorial mysql >Petua Laravel: whereHas atau whereRelation?
Selami Laravel Eloquent: Meneroka whereRelation
dan Aplikasi Praktikalnya
Siaran ini meneroka ORM Fasih Laravel, memfokuskan pada kaedah whereRelation
dan membandingkannya dengan kaedah whereHas
yang lebih lama. Kami akan mengkaji kekuatan dan batasannya, membimbing anda ke arah penggunaan yang optimum.
Senario: Mendapatkan semula pengguna dengan pesanan yang lengkap. Sebelum Laravel 8, whereHas
ialah standard untuk menanyakan lajur jadual berkaitan. Laravel 8 memperkenalkan whereRelation
, menawarkan sintaks yang lebih ringkas.
Sintaks yang dipertingkatkan tidak dapat dinafikan lebih bersih!
Prestasi dan Had: Salah tanggapan yang biasa ialah whereRelation
mengatasi whereHas
. Walau bagaimanapun, analisis mendedahkan bahawa kedua-duanya menjana pertanyaan SQL yang sama:
whereHas
Pertanyaan:
<code class="language-sql">select * from `users` where exists ( select * from `orders` where `users`.`id` = `orders`.`created_by` and `status` = ? and `orders`.`deleted_at` is null ) and `users`.`deleted_at` is null</code>
whereRelation
Pertanyaan:
<code class="language-sql">select * from `users` where exists ( select * from `orders` where `users`.`id` = `orders`.`created_by` and `status` = ? and `orders`.`deleted_at` is null ) and `users`.`deleted_at` is null</code>
Perbezaan utama terletak pada kefungsian. whereRelation
terhad kepada syarat tunggal pada jadual yang berkaitan, manakala whereHas
menyokong berbilang syarat dalam satu subkueri. whereRelation
akan mencipta subkueri berasingan untuk setiap syarat, menjadikannya tidak cekap untuk berbilang kriteria.
Memilih kaedah Eloquent yang betul adalah penting untuk kebolehbacaan dan kecekapan kod. Pertimbangkan kerumitan pertanyaan anda sebelum memilih whereHas
atau whereRelation
. Selamat mengekod! ?
Atas ialah kandungan terperinci Petua Laravel: whereHas atau whereRelation?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!