在Laravel Eloquent 中建立資料庫查詢時,您可能會遇到需要使用where 子句指定多個條件的場景。雖然級聯多個 where 呼叫是一種常見方法,但還有更優雅的替代方法可供考慮。
Laravel 提供了更簡潔的方法使用數組指定多個where 條件:
$query->where([ ['column_1', '=', 'value_1'], ['column_2', '<>', 'value_2'], // ... ]);
此方法可讓您將多個where 子句分組單一函數呼叫。
在 Laravel 5.3 之前,您可以使用陣列來指定多個 where條件,如果它們都使用相同的運算符(通常'and'):
$matchThese = ['field' => 'value', 'another_field' => 'another_value']; $results = User::where($matchThese)->get();
此方法將產生類似的查詢到:
SELECT * FROM users WHERE field = value AND another_field = another_value
如果您需要更複雜的條件,您可以在where子句中使用子查詢:
$subquery = User::where(...)->select('id')->where(...); $results = User::whereIn('id', $subquery)->get();
在這個例子中,子查詢傳回一組滿足特定條件的ID,然後用這些ID來過濾主查詢
為了說明這一點,請考慮以下查詢,該查詢檢索具有特定條件的使用者:
$results = User::where('active', 1) ->where('verified', 1) ->where('country', 'United States') ->get();
使用上述替代方法,查詢可以是寫為:
// Array-based where (Laravel 5.3 and later) $conditions = [ ['active', '=', 1], ['verified', '=', 1], ['country', '=', 'United States'], ]; $results = User::where($conditions)->get(); // Array method (prior to Laravel 5.3) $matchThese = ['active' => 1, 'verified' => 1, 'country' => 'United States']; $results = User::where($matchThese)->get();
利用這些技術,您可以創建更簡潔和可讀的查詢,從而增強您的可維護性程式碼。
以上是如何在 Laravel Eloquent 中有效地編寫多個 WHERE 子句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!