Laravel Eloquent でデータベース クエリを構築する場合、where 句を使用して複数の条件を指定する必要があるシナリオに遭遇する可能性があります。 。複数の where 呼び出しをカスケードするのが一般的なアプローチですが、検討すべきより洗練された代替方法もあります。
Laravel は、より簡潔な方法を提供します。配列を使用して複数の where 条件を指定するには:
$query->where([ ['column_1', '=', 'value_1'], ['column_2', '<>', 'value_2'], // ... ]);
このアプローチにより、複数の where 句をグループ化できます。
Laravel 5.3 より前では、すべて同じ演算子 (通常は 'and'):
$matchThese = ['field' => 'value', 'another_field' => 'another_value']; $results = User::where($matchThese)->get();
このメソッドは次のようなクエリを生成しますto:
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 はメインクエリをフィルタリングするために使用されます。 query.
説明のために、特定の条件でユーザーを取得する次のクエリを考えてみます。
$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 中国語 Web サイトの他の関連記事を参照してください。