ホームページ >バックエンド開発 >PHPチュートリアル >Laravel Eloquent で複数の WHERE 句を効率的にチェーンまたはグループ化するにはどうすればよいですか?

Laravel Eloquent で複数の WHERE 句を効率的にチェーンまたはグループ化するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-10 07:37:10179ブラウズ

How Can I Efficiently Chain or Group Multiple WHERE Clauses in Laravel Eloquent?

Laravel Eloquent で複数の WHERE 句をチェーンまたはグループ化する

Laravel Eloquent クエリで複数の WHERE 句を使用する場合、標準のチェーン構文。ただし、コードの優雅さと読みやすさを向上させるために利用できる代替アプローチがいくつかあります。

配列ベースの WHERE 句の使用

Laravel 5.3 で導入された array-ベースの WHERE 句を使用すると、複数の条件を 1 回の呼び出しでグループ化できます。これにより、次の例に示すように、必要なコードの行数が大幅に削減されます。

$query->where([
    ['column_1', '=', 'value_1'],
    ['column_2', '!=', 'value_2'],
    ['column_3', '=', 'value_3'],
    ...
]);

AND 演算の WHERE 句をグループ化

WHERE 句では AND 演算子を使用するため、それらを配列にグループ化し、where メソッドに渡すことができます。これは配列ベースのアプローチに似ていますが、AND 条件を明示的に指定します。

$matchThese = ['field' => 'value', 'another_field' => 'another_value', ...];

$results = User::where($matchThese)->get();

OR 演算子を使用してグループを結合する

両方を使用してより複雑なクエリを作成するにはAND 演算子と OR 演算子では、ネストされた配列を使用できます。次の例では、前の 2 つの手法を組み合わせています。

$matchThese = ['field' => 'value', 'another_field' => 'another_value', ...];
$orThose = ['yet_another_field' => 'yet_another_value', ...];

$results = User::where($matchThese)
    ->orWhere($orThose)
    ->get();

このクエリは次の SQL を生成します。

SELECT * FROM users
  WHERE (field = value AND another_field = another_value AND ...)
  OR (yet_another_field = yet_another_value AND ...)

これらの代替アプローチを使用すると、クエリの明確さと簡潔さを向上させることができます。雄弁なクエリにより、冗長で反復的なチェーン構文の必要性が軽減されます。

以上がLaravel Eloquent で複数の WHERE 句を効率的にチェーンまたはグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。