深入了解 Laravel Eloquent:探索 whereRelation
及其實際應用
這篇文章探討了 Laravel 的 Eloquent ORM,重點是 whereRelation
方法並將其與舊的 whereHas
方法進行比較。我們將研究它的優點和局限性,並指導您實現最佳使用。
場景:檢索已完成訂單的使用者。 在 Laravel 8 之前, whereHas
是查詢相關表格列的標準。 Laravel 8 引入了 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
將為每個條件建立一個單獨的子查詢,從而使其對於多個條件效率低下。
選擇正確的 Eloquent 方法對於程式碼的可讀性和效率至關重要。 在選擇 whereHas
或 whereRelation
之前,請考慮查詢的複雜性。 快樂編碼! ?
以上是Laravel 提示:whereHas 或 whereRelation?的詳細內容。更多資訊請關注PHP中文網其他相關文章!