ホームページ >データベース >mysql チュートリアル >CodeIgniter で複雑な条件の WHERE 句をグループ化するにはどうすればよいですか?
Codeigniter での WHERE 句のグループ化
複雑な条件で複数の WHERE 句をグループ化するには、group_start() と group_end() を使用できます。 Codeigniter のメソッド。これらのメソッドを使用すると、ネストされた WHERE 条件を作成できます。
Codeigniter 3:
$this->db->select() ->from('users') ->where('name !=', 'Joe') ->group_start() // Open bracket ->where('age <', 69) ->or_where('id <', $id) ->group_end(); // Close bracket
Codeigniter 4:
$builder->select('*') ->from('users') ->where('name !=', 'Joe') ->groupStart() ->where('age <', 69) ->orWhere('id <', $id) ->groupEnd();
この改訂されたコードは、group_start() と group_end() を使用して、年齢と ID の条件を括弧で囲みます。これにより、AND 条件 (年齢
動的クエリの処理:
元のクエリはユーザー パラメータに基づいて動的に生成されました。このようなシナリオでグループ化メソッドを使用するには、ループ内で目的の WHERE 条件を囲み、group_start() と group_end() を適切に使用します。
if ($price_range) { $price_array = explode('.', $price_range); $this->db->where('name !=', 'Joe'); for ($i = 0; $i < count($price_array); $i++) { if ($i === 0) { $this->db->group_start(); $this->db->where('places.price_range', $price_array[$i]); } else { $this->db->or_where('places.price_range', $price_array[$i]); } } $this->db->group_end(); }
この変更されたコードは、group_start() と group_end() を使用します。価格帯の条件をグループ化して、適切な演算子の優先順位を確保し、評価の問題を回避します。
以上がCodeIgniter で複雑な条件の WHERE 句をグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。