Rumah >pangkalan data >tutorial mysql >Petua Laravel: whereHas atau whereRelation?

Petua Laravel: whereHas atau whereRelation?

Barbara Streisand
Barbara Streisandasal
2025-01-17 12:02:12120semak imbas

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.

Laravel Tip: whereHas or whereRelation?

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.

Laravel Tip: whereHas or whereRelation?

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!

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