首頁 > 資料庫 > mysql教程 > Laravel 提示:whereHas 或 whereRelation?

Laravel 提示:whereHas 或 whereRelation?

Barbara Streisand
發布: 2025-01-17 12:02:12
原創
117 人瀏覽過

深入了解 Laravel Eloquent:探索 whereRelation 及其實際應用

這篇文章探討了 Laravel 的 Eloquent ORM,重點是 whereRelation 方法並將其與舊的 whereHas 方法進行比較。我們將研究它的優點和局限性,並指導您實現最佳使用。

場景:檢索已完成訂單的使用者。 在 Laravel 8 之前, whereHas 是查詢相關表格列的標準。 Laravel 8 引入了 whereRelation,提供了更簡潔的語法。

Laravel Tip: whereHas or whereRelation?

改進後的語法無疑更乾淨!

表現與限制:一個常見的誤解是 whereRelation 優於 whereHas。 然而,分析顯示兩者都會產生相同的 SQL 查詢:

whereHas查詢:

<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查詢:

<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 僅限於相關表上的單一條件,而 whereHas 支援單一子查詢中的多個條件。 whereRelation 將為每個條件建立一個單獨的子查詢,從而使其對於多個條件效率低下。

Laravel Tip: whereHas or whereRelation?

選擇正確的 Eloquent 方法對於程式碼的可讀性和效率至關重要。 在選擇 whereHaswhereRelation 之前,請考慮查詢的複雜性。 快樂編碼! ?

以上是Laravel 提示:whereHas 或 whereRelation?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板