Gruppieren von WHERE-Klauseln in Codeigniter
Um mehrere WHERE-Klauseln in einer komplexen Bedingung zu gruppieren, können Sie group_start() und group_end() verwenden. Methoden in Codeigniter. Mit diesen Methoden können Sie verschachtelte WHERE-Bedingungen erstellen.
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();
Dieser überarbeitete Code verwendet group_start() und group_end(), um die Alters- und ID-Bedingungen in Klammern zu setzen. Dadurch wird sichergestellt, dass zuerst die UND-Bedingung (Alter < 69) ausgewertet wird, gefolgt von der ODER-Bedingung (id < $id).
Umgang mit dynamischen Abfragen:
Ihre ursprüngliche Abfrage wurde dynamisch basierend auf Benutzerparametern generiert. Um die Gruppierungsmethoden in solchen Szenarien zu verwenden, können Sie die gewünschten WHERE-Bedingungen in eine Schleife einschließen und group_start() und group_end() entsprechend verwenden.
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(); }Dieser geänderte Code verwendet group_start() und group_end() um die Preisspannenbedingungen zu gruppieren, um eine ordnungsgemäße Bedienerpriorität sicherzustellen und Bewertungsprobleme zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie gruppiere ich WHERE-Klauseln in CodeIgniter für komplexe Bedingungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!