Daten sind die Blutlinie der meisten Anwendungen. Die Daten müssen so gespeichert werden, dass sie weiter analysiert werden können, um Erkenntnisse zu liefern und Geschäftsentscheidungen zu erleichtern. Die Daten werden normalerweise in der Datenbank gespeichert. Zu den Hauptanliegen bei der Interaktion mit der Datenbank zählen Sicherheit, einfacher Zugriff und herstellerspezifische Implementierungen von SQL (Structured Query Language).
Active Record ist ein Entwurfsmuster, mit dem die Interaktion mit der Datenbank auf einfache, sichere und beredte Weise vereinfacht wird.
Der aktive Datensatz bietet die folgenden Vorteile
- Einfügen, Aktualisieren und Löschen von Datensätzen mit einfachen Methodenketten aktiver Datensätze
- Sendet die Benutzereingaben auf sichere Weise mithilfe von Parametern
- Ermöglicht die Arbeit mit mehreren Datenbankmodulen wie MySQL, SQL Server usw., ohne den Anwendungscode neu zu schreiben
- CodeIgniter verwendet im Hintergrund für jedes Datenbankmodul spezifische Treiber.
In diesem Tutorial lernen Sie:
- Verwendung von Active Record: Beispiel
- CodeIgniter-Datenbankkonfiguration
- CodeIgniter Aktiven Datensatz einfügen
- CodeIgniter Wählen Sie Active Record
- CodeIgniter Active Record aktualisieren
- CodeIgniter Aktiven Datensatz löschen
Verwendung von Active Record: Beispiel
In diesem Tutorial werden wir die Tutorial-Datenbank diskutieren. Wir werden zwei Tische haben, einen mit Bestellungen, den anderen mit Details.
In diesem Tutorial wird davon ausgegangen, dass Sie die MySQL-Datenbank installiert und ausgeführt haben.
Führen Sie die folgenden Skripts aus, um eine Lernprogrammdatenbank zu erstellen:
CREATE SCHEMA ci_active_record;USE ci_active_record;CREATE TABLE `order_details` (`id` int(11) NOT NULL AUTO_INCREMENT,`order_id` int(11) DEFAULT NULL,`item` varchar(245) DEFAULT NULL,`quantity` int(11) DEFAULT '0',`price` decimal(10,2) DEFAULT '0.00',`sub_total` decimal(10,2) DEFAULT '0.00',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT = 1;CREATE TABLE `orders` (`id` int(11) NOT NULL AUTO_INCREMENT,`date` timestamp NULL DEFAULT NULL,`customer_name` varchar(245) DEFAULT NULL,`customer_address` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT = 1;
Der obige Code erstellt eine Datenbank mit dem Namen ci_active_record und erstellt zwei Tabellen, nämlich orders und order_details. Die Beziehung zwischen den beiden Tabellen wird durch die Spalten-ID in Bestellungen und die Bestell-ID in der Tabelle "Bestelldetails" definiert.
CodeIgniter-Datenbankkonfiguration
Wir werden nun unsere Anwendung so konfigurieren, dass sie mit dieser Datenbank kommunizieren kann.
Öffnen Sie die Datenbankkonfigurationsdatei in application / config / database.php
Suchen Sie die folgenden Zeilen in der Konfigurationsdatei
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Aktualisieren Sie den obigen Code wie folgt
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Hinweis: Sie müssen den Benutzernamen und das Kennwort durch diejenigen ersetzen, die Ihrer Konfiguration von MySQL entsprechen.
Zusätzlich zu den Details zur Datenbankkonfiguration müssen wir CodeIgniter anweisen, die Datenbankbibliothek beim Laden zu laden
Schritt 1) Öffnen Sie die folgende Datei application / config / autoload.php
Schritt 2) Suchen Sie die Array-Schlüsselbibliotheken $ autoload und laden Sie die Datenbankbibliothek wie unten gezeigt
$autoload['libraries'] = array('database');
HIER,
- Der obige Code lädt die Datenbankbibliothek beim Start der Anwendung
CodeIgniter Aktiven Datensatz einfügen
Zu Testzwecken erstellen wir einen Controller und definierte Routen, die wir verwenden, um über einen aktiven Datensatz mit unserer Anwendung zu interagieren.
Erstellen Sie eine neue Datei application / controller / ActiveRecordController.php
Fügen Sie ActiveRecordController.php den folgenden Code hinzu
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
HIER,
- $ data = […] definiert Array-Variablendaten, die Datenbanktabellennamen als Array-Schlüssel verwenden und ihnen Werte zuweisen
- $ this-> db-> insert ('Bestellungen', $ Daten); Ruft die Einfügemethode der Datenbankbibliothek auf, übergibt die Tabellennamenreihenfolgen und die Arrayvariable $ data als Parameter. Diese Zeile generiert die SQL INSERT-Anweisung unter Verwendung der Array-Schlüssel als Feldnamen und der Array-Werte als Werte, die in die Datenbank eingefügt werden sollen.
Nachdem wir die Controller-Methode für den aktiven Datensatz erfolgreich erstellt haben, müssen wir nun eine Route erstellen, die wir aufrufen, um die Controller-Methode auszuführen.
Öffnen Sie nun route.php in application / config / route.php
Fügen Sie den Routen die folgende Zeile hinzu
$route['ar/insert'] = 'activerecordcontroller/store_order';
HIER,
- Wir definieren eine Route ar / insert, die den store_order des ActiveRecordController aufruft.
Starten wir nun den Webserver, um unsere Methode zu testen.
Führen Sie den folgenden Befehl aus, um den integrierten Server für PHP zu starten
cd C:\Sites\ci-appphp -S localhost:3000
HIER,
- Rufen Sie den obigen Befehlsbrowser zur Befehlszeile auf und starten Sie den eingebauten Server an Port 3000.
Laden Sie die folgende URL in Ihren Browser
http: // localhost: 3000 / ar / insert
Sie erhalten die folgenden Ergebnisse
order has successfully been created
Öffnen Sie die MySQL-Lernprogrammdatenbank und überprüfen Sie die Auftragstabelle
Sie können eine neu erstellte Zeile erstellen, wie in der Abbildung unten gezeigt
CodeIgniter Wählen Sie Active Record
In diesem Abschnitt erfahren Sie, wie Sie die in der Datenbank vorhandenen Datensätze lesen und im Webbrowser als ungeordnete Liste anzeigen
Fügen Sie dem ActiveRecordController die folgende Methode hinzu
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
HIER,
- $ query = $ this-> db-> get ('orders'); führt die Auswahlabfrage für die Auftragstabelle aus und wählt alle Felder aus
- echo "
Auftragsliste h4>"; Zeigt eine HTML-Überschrift der Größe 3 an
- Echo "
- "; druckt das Eröffnungs-Tag für die ungeordnete HTML-Liste
- foreach ($ query-> result () als $ row) {…} verwendete die for-Schleife, um die von der Datenbank zurückgegebenen Ergebnisse zu durchlaufen. echo "
- $ row-> customer_name li>"; druckt den Kundennamen aus der Datenbank
Bevor Sie die folgende URL laden, können Sie einige weitere Datensätze in die Datenbank laden.
Definieren wir nun eine Route für die SELECT-Abfrage
Öffnen Sie die Tabelle application / config / route.php
Fügen Sie die folgende Route hinzu
$route['ar'] = 'activerecordcontroller';
HIER,
- Die Route ar zeigt auf die Indexmethode der ActiveRecordController-Klasse. Aus diesem Grund haben wir die Indexmethode nicht wie für die Route zum Einfügen von Datensätzen angegeben
Angenommen, der Webserver wird bereits ausgeführt, laden Sie die folgende URL
http: // localhost: 3000 / ar
Sie sollten in Ihrem Webbrowser Ergebnisse sehen können, die den folgenden sehr ähnlich sind
CodeIgniter Active Record aktualisieren
In diesem Abschnitt erfahren Sie, wie Sie den aktiven Datensatz zum Aktualisieren der Datenbank verwenden. Angenommen, wir möchten den Kundennamen Joe Thomas auf Joe aktualisieren.
Fügen Sie der ActiveRecordController-Klasse die folgende Methode hinzu
public function update_order() {$data = ['customer_name' => 'Joe',];$this->db->where('id', 1);$this->db->update('orders', $data);echo 'order has successfully been updated';}
HIER,
- $ data = […] definiert die Felder und Werte, die in der Datenbanktabelle aktualisiert werden sollen
- $ this-> db-> where ('id', 1); Legt die where-Klausel der Aktualisierungsabfrage fest
- $ this-> db-> update ('Bestellungen', $ Daten); generiert die SQL-Update-Abfrage und führt sie für unsere Datenbank aus.
Der obige Code erzeugt die folgende SQL-Anweisung
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Lassen Sie uns nun die Datei route.php / config / route.php aktualisieren
Fügen Sie die folgende Route hinzu
$route['ar/update'] = 'activerecordcontroller/update_order';
Speichern Sie die Änderungen
Laden Sie die folgende URL in den Webbrowser
Lassen Sie uns nun die Datenbankeinträge anzeigen und prüfen, ob die Änderungen betroffen sind.
Wie Sie dem oben angegebenen Bild entnehmen können, wurde der erste Datensatz von Joe Thomas auf Joe aktualisiert.
CodeIgniter Aktiven Datensatz löschen
Wir werden jetzt einen Datensatz aus der Datenbank löschen. Wir werden den Datensatz mit der ID 3 löschen.
Fügen Sie dem ActiveRecordController die folgende Methode hinzu
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
HIER,
- $ this-> db-> where ('id', 1); setzt die where-Klausel
- $ this-> db-> delete ('Bestellungen'); Löscht die Datenbankzeile in der Auftragstabelle basierend auf den Kriterien, die mit der where-Klausel festgelegt wurden.
Laden Sie die folgende URL in unseren Webbrowser, um den obigen Code auszuführen
http: // localhost: 3000 / ar / delete
Zusammenfassung
In diesem Lernprogramm haben Sie gelernt, wie Sie mit einem aktiven Datensatz arbeiten, um Datensätze aus der Datenbank einzufügen, zu aktualisieren, zu löschen und auszuwählen. Wir haben mit statischen Werten gearbeitet, um Datensätze zu erstellen, zu aktualisieren und zu löschen. Im nächsten Tutorial erstellen wir eine Benutzeroberfläche, mit der der Benutzer Datensätze dynamisch in der Datenbank erstellen kann.