CodeIgniter での WHERE 句のグループ化
CodeIgniter は、Active Record を使用して SQL クエリを構築するための便利なメソッドを提供します。複雑なクエリの場合、わかりやすく正確にするために WHERE 句をグループ化する必要がある場合があります。
問題:
次の SQL コードを考えてみましょう:
WHERE name != 'Joe' AND (age < 69 OR id > 50)
これを CodeIgniter のアクティブ レコード構文に直接変換すると、 get:
$this->db->select() ->from('users') ->where('name !=', 'Joe') ->where('age <', 69) ->or_where('id <', $id);
ただし、このクエリは括弧を使用して部分句を正しくグループ化しません。
解決策:
括弧を使用して WHERE 句をグループ化するにはCodeIgniter では、次のように group_start() メソッドと group_end() メソッドを使用します。
$this->db->select() ->from('users') ->where('name !=', 'Joe') ->group_start() // Open parentheses ->where('age <', 69) ->or_where('id <', $id) ->group_end(); // Close parentheses
このクエリは、括弧で囲まれた副次句を含む目的の SQL コードを生成します。
複雑なクエリに関する考慮事項:
In CodeIgniter 3 では、group_start() メソッドと group_end() メソッドがデータベース ビルダーで利用可能であり、データベース ビルダーにアクセスします。 $this->db 経由。 CodeIgniter 4 では、$builder などの変数に割り当てられるクエリ ビルダーで使用できます。
複雑なクエリで複数の OR 句を使用する場合は、groupStart() メソッドと groupEnd() メソッドの使用を検討してください。演算子が正しい順序で評価されることを確認します。これにより、クエリが意図した結果を生成するようになります。
以上がCodeIgniter で WHERE 句をグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。