CodeIgniter Arbeiten mit der Datenbank
Im vorherigen Lernprogramm haben wir die Grundlagen des aktiven CodeIgniter-Datensatzes sowie das Einfügen, Aktualisieren, Löschen und Lesen von Datensätzen aus der Datenbank behandelt. In diesem Tutorial erstellen wir Datenbankmodelle und verwenden Formulare zum Erstellen und Aktualisieren von Datenbankeinträgen. Wenn Sie mit der Arbeit mit Datenbanken in CodeIgniter noch nicht vertraut sind, empfehlen wir Ihnen, das vorherige Lernprogramm zu lesen
Datenbankkonfiguration
Wir beginnen mit der Erstellung der Tutorial-Projektdatenbank. Wir erstellen eine einfache Datenbank für die Verwaltung der Kontaktdaten. Wir werden eine einfache Datenbank mit zwei (2) Tabellennamen erstellen, in denen Freunde und Städte leben, in denen sie leben. Die Beziehung zwischen Freunden und Städten ist eins zu eins mit der ID in Städten als Primärschlüssel und city_id als Fremdschlüssel in Kumpeltabellen .
Führen Sie die folgenden Skripts aus, um die Datenbank zu erstellen:
CREATE TABLE `pals` (`id` int(11) NOT NULL AUTO_INCREMENT,`city_id` int(11) DEFAULT NULL,`contact_name` varchar(245) DEFAULT NULL,`contact_number` varchar(245) DEFAULT NULL,`email_address` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`));
Lassen Sie uns nun die Stadttabelle erstellen
CREATE TABLE `cities` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ;
CodeIgniter-Datenbankmodelle
Wir werden nun Modelle für unsere Datenbank erstellen. Das Modell ist der M-Teil der MVC. Das Modell befasst sich mit Datenzugriff, Datenmanipulation und Geschäftslogik.
In CodeIgniter muss jedes Modell die Methoden definieren, die es unterstützt. Anstatt denselben Code in jedem Modell zu wiederholen, nutzen wir die Vererbung in der objektorientierten Programmierung und erstellen eine übergeordnete Modellklasse, die die grundlegenden Methoden definiert, die unsere Modelle unterstützen sollen.
Die folgende Tabelle zeigt die Methoden, die wir definieren und wie auf Daten zugegriffen wird.
S / N. | Methode | Beschreibung |
1 | __bauen | Definiert die Konstruktormethode, die die übergeordnete Konstruktormethode aufruft |
2 | Nimm alle | Ruft alle Felder und Datensätze ohne Bedingungen aus der Datenbank ab |
3 | get_by_id | Ruft eine einzelne Zeile aus der Datenbank mit dem Primärschlüssel des INT-Typs id ab |
4 | get_where | Ruft alle Felder aus der Datenbank basierend auf den basierten Kriterien ab |
5 | einfügen | Fügt einen neuen Datensatz in die Datenbank ein |
6 | aktualisieren | Aktualisiert einen vorhandenen Datenbankeintrag basierend auf dem Primärschlüssel des INT-Typs mit dem Namen id |
7 | löschen | Löscht einen vorhandenen Datensatz aus der Datenbank basierend auf dem Primärschlüssel des INT-Typs mit dem Namen id |
Das folgende Bild zeigt das Klassendiagramm und wie sich untergeordnete Modelle von Pals und Cities auf das übergeordnete Modell BaseModel beziehen.
Wir werden zwei Modelle erstellen, wie im obigen Bild beschrieben
Erstellen Sie eine neue Klasse BaseModel in application / models / BaseModel.php
Fügen Sie den folgenden Code hinzu
db->get($this->table)->result();}public function get_by_id($id) {return $this->db->get_where($this->table, array('id' => $id))->row();}public function get_where($where) {return $this->db->where($where)->get($this->table)->result();}public function insert($data) {return $this->db->insert($this->table, $data);}public function update($id, $data) {$this->db->where('id', $id);$this->db->update($this->table, $data);}public function delete($id) {$this->db->where('id', $id);$this->db->delete($this->table);}}
HIER,
- protected $ table = ''; definiert eine geschützte Variable namens table. Dies wird von der jeweiligen untergeordneten Klasse ausgefüllt, um anzugeben, mit welcher Tabelle unsere Methoden der Basismodellklasse interagieren sollen.
- public function __construct () {…} definiert die Konstruktormethode und führt die Konstruktormethode der übergeordneten Klasse CI_Model aus.
- get_all () {…} verwendet die Datenbankbibliothek und den Wert der Variablen $ table, um die SELECT-Abfrage für unsere Datenbank auszuführen.
- get_by_id ($ id) {…} definiert die Methode zum Abrufen einer einzelnen Zeile aus der Datenbank und akzeptiert einen Parameter $ id, der vom Datentyp INT sein sollte.
- get_where ($ where) {…} definiert die get-Methode, mit der Sie eine where-Klausel festlegen können.
- insert ($ data) {…} definiert die Einfügemethode und akzeptiert den Array-Parameter $ data, der die Werte enthält, die in die Datenbank geschrieben werden sollen.
- update ($ id, $ data) {…} definiert die Aktualisierungsmethode und akzeptiert den Array-Parameter $ data, der die zu aktualisierenden Werte in der Datenbank enthält.
- delete ($ id) {…} definiert die Löschmethode, die einen Parameter von $ id akzeptiert, der vom Datentyp INT sein sollte.
Nachdem wir mit der übergeordneten Modellklasse fertig sind, können Sie unsere Pals-Modelle erstellen
Erstellen Sie eine neue Datei in application / models / Pals.php
Fügen Sie den folgenden Code hinzu
db->where('pals.id', $id);$this->db->select('pals.*,cities.name');$this->db->from('pals');$this->db->join('cities', 'pals.city_id = cities.id');$query = $this->db->get();return $query->row();}public function get_all() {$this->db->select('pals.*,cities.name');$this->db->from('pals');$this->db->join('cities', 'pals.city_id = cities.id');$query = $this->db->get();return $query->result();}}
HIER,
- Klasse Pals erweitert BaseModel {…} erweitert das übergeordnete Modell BaseModel und lässt automatisch alle im BaseModel definierten Methoden auf die untergeordnete Klasse zugreifen.
- protected $ table = 'pals'; Definiert den Tabellennamen, der unserem übergeordneten Modell zugeordnet ist
- __construct () {…} initialisiert den übergeordneten Konstruktor
- Die öffentliche Funktion get_by_id ($ id) {…} überschreibt die get_by_id, um eine benutzerdefinierte Implementierung für das Pals-Modell bereitzustellen. Die Abfrage für get_by_id verwendet einen Join, um den Städtenamen aus der Stadttabelle abzurufen
- Die öffentliche Funktion get_all () {…} überschreibt die Methode get_all, um eine Verknüpfungsabfrage zwischen Freunden und der Stadttabelle zu implementieren
Erstellen Sie eine neue Datei in application / models / Cities.php
HIER,
- protected $ table = 'Städte'; definiert die Modelldatenbanktabelle.
Wie Sie dem oben angegebenen Code entnehmen können, spart uns die Vererbung viel Zeit bei der Arbeit mit Modellen in CodeIgniter. Im nächsten Abschnitt werden wir lernen
Kontakte Manager-Controller
Nachdem wir die Modelle erstellt haben, erstellen wir die Controller für unsere Anwendung. Wir werden zwei Controller haben, nämlich Kontakte und Städte
Beginnen wir mit Städten
Erstellen Sie eine neue Datei Cities.php im Verzeichnis application / controller
Fügen Sie den folgenden Code hinzu
load->helper('url', 'form');$this->load->library('form_validation');$this->load->model('cities_model');}public function index() {$header['title'] = 'Cities Listing';$data['pals'] = $this->cities_model->get_all();$this->load->view('header',$header);$this->load->view('cities/index', $data);$this->load->view('footer');}public function create() {$header['title'] = 'Create City';$this->load->view('header',$header);$this->load->view('cities/create');$this->load->view('footer');}public function store() {$rules = array(array('field' => 'name','label' => 'City Name','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == TRUE) {$data = array('name' => $this->input->post('name'));$this->cities_model->insert($data);redirect(base_url('cities'));} else {$header['title'] = 'Create City';$this->load->view('header',$header);$this->load->view('cities/create');$this->load->view('footer');}}public function edit($id) {$header['title'] = 'Edit City';$data['city'] = $this->cities_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('cities/edit', $data);$this->load->view('footer');}public function update($id) {$rules = array(array('field' => 'name','label' => 'City Name','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == TRUE) {$data = array('name' => $this->input->post('name'));$this->cities_model->update($id,$data);redirect(base_url('cities'));} else {$header['title'] = 'Edit City';$data['city'] = $this->cities_model->get_by_id($id);$this->load->view('header',$header);$this->load->view('cities/create',$data);$this->load->view('footer');}}public function delete($id) {$header['title'] = 'Delete City';$data['city'] = $this->cities_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('cities/delete', $data);$this->load->view('footer');}public function destroy($id) {$this->cities_model->delete($id);redirect(base_url('cities'));}}
HIER,
- Der obige Code implementiert alle Methoden, die zum Erstellen, Aktualisieren, Löschen und Lesen von Zeilen aus der Datenbank erforderlich sind.
Erstellen Sie eine weitere Datei Contacts.php in Anwendung / Controllern
Fügen Sie den folgenden Code hinzu
load->helper('url', 'form');$this->load->library('form_validation');$this->load->model('pals_model');}public function index() {$header['title'] = 'Contacts List';$data['pals'] = $this->pals_model->get_all();$this->load->view('header', $header);$this->load->view('contacts/index', $data);$this->load->view('footer');}public function create() {$this->load->model('cities_model');$header['title'] = 'Create Contact';$data['cities'] = $this->cities_model->get_all();$this->load->view('header', $header);$this->load->view('contacts/create', $data);$this->load->view('footer');}public function store() {$rules = array(array('field' => 'contact_name','label' => 'Contact Name','rules' => 'required'),array('field' => 'contact_number','label' => 'Contact Number','rules' => 'required','errors' => array('required' => 'You must provide a %s.',),),array('field' => 'email_address','label' => 'Email Address','rules' => 'required'),array('field' => 'city_id','label' => 'City','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == FALSE) {$this->load->model('cities_model');$header['title'] = 'Create Contact';$data['cities'] = $this->cities_model->get_all();$this->load->view('header', $header);$this->load->view('contacts/create', $data);$this->load->view('footer');} else {$data = array('city_id' => $this->input->post('city_id'),'contact_name' => $this->input->post('contact_name'),'contact_number' => $this->input->post('contact_number'),'email_address' => $this->input->post('email_address'),);$this->pals_model->insert($data);redirect(base_url('contacts'));}}public function edit($id) {$this->load->model('cities_model');$header['title'] = 'Edit Contact';$data['cities'] = $this->cities_model->get_all();$data['pal'] = $this->pals_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('contacts/edit', $data);$this->load->view('footer');}public function update($id) {$rules = array(array('field' => 'contact_name','label' => 'Contact Name','rules' => 'required'),array('field' => 'contact_number','label' => 'Contact Number','rules' => 'required','errors' => array('required' => 'You must provide a %s.',),),array('field' => 'email_address','label' => 'Email Address','rules' => 'required'),array('field' => 'city_id','label' => 'City','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == FALSE) {$this->load->model('cities_model');$header['title'] = 'Create Contact';$data['cities'] = $this->cities_model->get_all();$data['pal'] = $this->pals_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('contacts/edit', $data);$this->load->view('footer');} else {$data = array('city_id' => $this->input->post('city_id'),'contact_name' => $this->input->post('contact_name'),'contact_number' => $this->input->post('contact_number'),'email_address' => $this->input->post('email_address'),);$this->pals_model->update($id, $data);redirect(base_url('contacts'));}}public function delete($id) {$this->load->model('cities_model');$header['title'] = 'Delete Contact';$data['cities'] = $this->cities_model->get_all();$data['pal'] = $this->pals_model->get_by_id($id);$this->load->view('header',$header);$this->load->view('contacts/delete',$data);$this->load->view('footer');}public function destroy($id){$this->pals_model->delete($id);redirect(base_url('contacts'));}}
Ansichten des Kontaktmanagers
Wir haben uns bereits in den vorherigen Tutorials mit Formularen und Validierung in CodeIgniter befasst. Wir werden den Code verwenden, den wir in den vorherigen Tutorials entwickelt haben. Der Vollständigkeit halber werden wir den Code reproduzieren, den wir in den vorherigen Tutorials erstellt haben.
Die Ansichten unserer Anwendung sind wie folgt
Sie können den Code für die obigen Ansichten herunterladen, indem Sie auf den Link unten klicken
CodeIgniter Contacts Manager-Ansichten herunterladen
Zusammenfassung
In diesem Tutorial erfahren Sie, wie Sie Modelle in CodeIgniter erstellen. Wir haben die Vererbung in der objektorientierten Programmierung genutzt, um die Wiederverwendbarkeit von Code zu fördern, indem wir ein Basismodell erstellt haben, das die vier wichtigsten Datenbankoperationen Einfügen, Lesen, Aktualisieren und Löschen implementiert.
Wir haben die Konzepte anhand einer praktischen Anwendung demonstriert und werden dies in den nächsten Tutorials auch weiterhin tun, indem wir der Anwendung weitere Funktionen hinzufügen.