ホームページ >データベース >mysql チュートリアル >CodeIgniter で複雑な条件の WHERE 句をグループ化するにはどうすればよいですか?

CodeIgniter で複雑な条件の WHERE 句をグループ化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-11 03:25:02942ブラウズ

How do I group  WHERE clauses in CodeIgniter for complex conditions?

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 サイトの他の関連記事を参照してください。

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