Maison  >  Article  >  base de données  >  Comment regrouper les clauses WHERE dans CodeIgniter pour des conditions complexes ?

Comment regrouper les clauses WHERE dans CodeIgniter pour des conditions complexes ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-11 03:25:02874parcourir

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

Regroupement de clauses WHERE dans Codeigniter

Pour regrouper plusieurs clauses WHERE dans une condition complexe, vous pouvez utiliser group_start() et group_end() méthodes dans Codeigniter. Ces méthodes vous permettent de créer des conditions WHERE imbriquées.

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();

Ce code révisé utilise group_start() et group_end() pour mettre les conditions d'âge et d'identification entre parenthèses. Cela garantit que la condition ET (âge < 69) est évaluée en premier, suivie de la condition OU (id < $id).

Gestion des requêtes dynamiques :

Votre requête d'origine a été générée dynamiquement en fonction des paramètres utilisateur. Pour utiliser les méthodes de regroupement dans de tels scénarios, vous pouvez enfermer les conditions WHERE souhaitées dans une boucle et utiliser group_start() et group_end() de manière appropriée.

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();
}

Ce code modifié utilise group_start() et group_end() pour regrouper les conditions de la fourchette de prix, garantissant une bonne priorité des opérateurs et évitant les problèmes d'évaluation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn