Hallo,
heute möchte ich mal aufzeigen, wie ich meine SQLs Queries in CodeIgniter verarbeite. Es gibt verschiedene Möglichkeiten hierfür, je nachdem welche Art des Resultsets ihr erwartet.
1. Ein Resultset verarbeiten, dass eine feste ID hat und zu jeder ID einen Wert zurück gibt
Gegeben sei folgende Tabelle:
public function read_person() { $this->db->select(' person.id person_id ,person.name person_name ') ->from(' persons person') ->where(' person.id', $this->input->post('person_id') ) ->order_by(' person.name', 'asc'); $query = $this->db->get(); $ret_arr = array(); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { $ret_arr[$row->person_id] = $row->person_name; } return $ret_arr; } else { return array(); } }
Erkläung der Zeilen:
- Zeile 3-8: SQL Query Builder nutzen, um das SQL-Statement zu erstellen
- Zeile 10: Ausführen der SQL
- Zeile 12: Init des Return Arrays, das später NULL oder die Results der Query haben wird
- Zeile 14-20: Jetzt füllen des Return Arrays, in diesem Fall einfaches Mappen der ID => Name
- Zeile 22: Falls keine Daten gefunden werden, wird ein leeres Array zurück gegeben
2. Erstellen eines Arrays mit weiteren Zuordnungen
Dieses Beispiel zeigt, wie man dann Unterarrays verbinden kann. Beispielsweise, wenn eine Person einen Vor- und Nachname hat.
Gegeben sei folgende, erweiterte Tabelle:
public function read_person() { $this->db->select(' person.id person_id ,person.firstname person_firstname ,person.lastname person_lastname ') ->from(' persons person') ->where(' person.id', $this->input->post('person_id') ) ->order_by(' person.name', 'asc'); $query = $this->db->get(); $ret_arr = array(); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { $ret_arr[$row->person_id]['vorname'] = $row->person_firstname; $ret_arr[$row->person_id]['nachname']= $row->person_lastname; } return $ret_arr; } else { return array(); } }
Wir können in diesem Fall nicht einfach ID => Name verbinden, sondern benötigen ein Unterarray.
Habt ihr weitere Anwendungsbeispiele? Oder würdet ihr das gezeigte auf einem anderen Weg umsetzen?
Lasst es mich doch bitte über die Kommentarfunktion wissen!