CodeIgniter – SQL SELECT-Befehle verarbeiten (mit dem Query Builder)

0
136

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!

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here