>데이터 베이스 >MySQL 튜토리얼 >복잡한 조건에 대해 CodeIgniter에서 WHERE 절을 어떻게 그룹화합니까?

복잡한 조건에 대해 CodeIgniter에서 WHERE 절을 어떻게 그룹화합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-11 03:25:02944검색

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()를 사용하여 age 및 id 조건을 괄호로 묶습니다. 이렇게 하면 AND 조건(age < 69)이 먼저 평가되고 OR 조건(id < $id)이 뒤따릅니다.

동적 쿼리 처리:

귀하의 원래 검색어는 사용자 매개변수를 기반으로 동적으로 생성되었습니다. 이러한 시나리오에서 그룹화 방법을 사용하려면 원하는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.