Maison > Article > base de données > Comment regrouper les clauses WHERE dans CodeIgniter pour des conditions complexes ?
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!