首頁 >資料庫 >mysql教程 >如何將子查詢與 Laravel 的 `whereIn` 子句一起使用?

如何將子查詢與 Laravel 的 `whereIn` 子句一起使用?

Patricia Arquette
Patricia Arquette原創
2024-12-07 12:47:16931瀏覽

How to Use Subqueries with Laravel's `whereIn` Clause?

將子查詢合併到Laravel 查詢中:子查詢WHERE IN 範例

在處理複雜的資料庫查詢時,子查詢提供了一種強大的檢索資料的方法來自多個表或基於計算過濾結果。 Laravel 是一個流行的 PHP 框架,提供了一個易於使用的介面來處理子查詢。

問題:

您需要在 Laravel 中建立一個查詢來提取使用子查詢根據「product_category」表中的值過濾「products」表中的資料。具體來說,您希望包含符合下列條件的行:

  • 「products」表中的「id」必須出現在「product_category」表的「product_id」欄位中。
  • 「product_category」中的類別 ID 值為「223」或「15」
  • 「產品」表中的「活動」欄位設定為 1。

解決方案:

要實現此目的, Laravel提供了一種靈活的方法來將子查詢合併到您的查詢中,使用閉包:

Products::whereIn('id', function($query){
    $query->select('product_id')
    ->from(with(new ProductCategory)->getTable())
    ->whereIn('category_id', ['223', '15'])
    ->where('active', 1);
})
->get();
  1. 子查詢定義(在閉包中):

    • function($query):定義subquery.
    • $query->select(...):指定子查詢中的哪一列想要找回。在本例中,它是“product_id”。
    • from(with(new ProductCategory)->getTable()):決定從中取得子查詢資料的表。它引用“product_category”表。
    • ->whereIn('category_id', ['223', '15']):設定子查詢的篩選條件,將結果限制為“category_id”所在的行是“223”或“15” 。
    • ->where('active', 1): 新增額外的篩選器以確保「product_category」表中的「active」設定為 1。
  2. 主查詢:

    • whereIn('id', ...):這是使用定義的子查詢的主查詢在關閉中。它將“products”表中的“id”列與子查詢結果中的“product_id”進行比對。

以上是如何將子查詢與 Laravel 的 `whereIn` 子句一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn