Data is de bloedlijn van de meeste applicaties. De gegevens moeten zo worden opgeslagen dat ze verder kunnen worden geanalyseerd om inzichten te verschaffen en zakelijke beslissingen te vergemakkelijken. De gegevens worden meestal opgeslagen in de database. Een van de belangrijkste zorgen bij de interactie met de database zijn beveiliging, gemakkelijke toegang en databaseleverancier-specifieke implementaties van Structured Query Language (SQL).
Active record is een ontwerppatroon dat het gemakkelijk maakt om op een gemakkelijke, veilige en welsprekende manier met de database te communiceren.
Het actieve record heeft de volgende voordelen
- Voeg records in, werk ze bij en verwijder ze met eenvoudige methodeketens van actieve records
- Verzendt de gebruikersinvoer op een veilige manier met behulp van parameters
- Hiermee kunt u met meerdere database-engines zoals MySQL, SQL Server, enz. Werken zonder de applicatiecode te herschrijven
- CodeIgniter gebruikt stuurprogramma's die specifiek zijn voor elke database-engine op de achtergrond.
In deze tutorial leer je:
- Actief record gebruiken: voorbeeld
- CodeIgniter-databaseconfiguratie
- CodeIgniter Actieve record invoegen
- CodeIgniter Selecteer Actief record
- CodeIgniter Actief record bijwerken
- CodeIgniter Verwijder actief record
Actief record gebruiken: voorbeeld
In deze tutorial bespreken we de tutorial-database. We zullen twee tafels hebben, de ene met bestellingen en de andere met details.
In deze tutorial wordt ervan uitgegaan dat de MySQL-database is geïnstalleerd en actief is.
Voer de volgende scripts uit om een zelfstudiedatabase te maken:
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;
De bovenstaande code creëert een database met de naam ci_active_record en creëert twee tabellen, namelijk orders en order_details. De relatie tussen de twee tabellen wordt bepaald door de kolom-id in orders en order_id in de tabel order_details.
CodeIgniter-databaseconfiguratie
We gaan nu onze applicatie configureren om met deze database te kunnen communiceren.
Open het databaseconfiguratiebestand in application / config / database.php
zoek de volgende regels in het configuratiebestand
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Werk de bovenstaande code bij naar het volgende
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Opmerking: u moet de gebruikersnaam en het wachtwoord vervangen door degene die overeenkomen met uw configuratie van MySQL.
Naast de databaseconfiguratiedetails, moeten we CodeIgniter ook vertellen om de databasebibliotheek te laden wanneer deze wordt geladen
Stap 1) Open het volgende bestand application / config / autoload.php
Stap 2) Lokaliseer de $ autoload arraysleutelbibliotheken en laad de databasebibliotheek zoals hieronder weergegeven
$autoload['libraries'] = array('database');
HIER,
- De bovenstaande code laadt de databasebibliotheek wanneer de applicatie start
CodeIgniter Actieve record invoegen
Voor testdoeleinden zullen we een controller en gedefinieerde routes maken die we zullen gebruiken om via een actief record met onze applicatie te communiceren.
Maak een nieuw bestand application / controllers / ActiveRecordController.php
Voeg de volgende code toe aan ActiveRecordController.php
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
HIER,
- $ data = […] definieert een array-variabele data die databasetabelnamen gebruikt als arraysleutels en wijst er waarden aan toe
- $ this-> db-> insert ('orders', $ data); roept de invoegmethode van de databasebibliotheek aan, geeft de volgorde van de tabelnaam en de matrixvariabele $ data als parameter door. Deze regel genereert de SQL INSERT-instructie met behulp van de arraysleutels als de veldnamen en de arraywaarden als de waarden die in de database moeten worden ingevoegd.
Nu we met succes de controllermethode voor actief opnemen hebben gemaakt, moeten we nu een route maken die we zullen aanroepen om de controllermethode uit te voeren.
Open nu routes.php in application / config / routes.php
voeg de volgende regel toe aan de routes
$route['ar/insert'] = 'activerecordcontroller/store_order';
HIER,
- We definiëren een route ar / insert die de store_order van de ActiveRecordController aanroept.
Laten we nu de webserver starten om onze methode te testen.
Voer de volgende opdracht uit om de ingebouwde server voor PHP te starten
cd C:\Sites\ci-appphp -S localhost:3000
HIER,
- De bovenstaande opdrachtbrowser naar de opdrachtregel en start de ingebouwde server op poort 3000.
Laad de volgende URL in uw browser
http: // localhost: 3000 / ar / insert
U krijgt de volgende resultaten
order has successfully been created
Open de MySQL-tutorialdatabase en controleer de besteltabel
U kunt een nieuw gemaakte rij maken zoals weergegeven in de onderstaande afbeelding
CodeIgniter Selecteer Actief record
In dit gedeelte zullen we zien hoe we de records die we in de database hebben, kunnen lezen en ze in de webbrowser kunnen weergeven als een ongeordende lijst
Voeg de volgende methode toe aan de ActiveRecordController
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 ('bestellingen'); voert de selectiequery uit op basis van de ordertabel en selecteert alle velden
- echo "
Lijst met bestellingen
"; geeft een HTML-kop weer van grootte 3 - echo "
- "; drukt de openingstag af voor niet-geordende HTML-lijst
- foreach ($ query-> result () as $ row) {…} gebruikte de for-lus om door de resultaten te lopen die uit de database werden geretourneerd. echo "
- $ rij-> klantnaam "; drukt de klantnaam af uit de database
Voordat u de volgende URL laadt, kunt u nog een paar records in de database laden.
Laten we nu een route definiëren voor de SELECT-query
Open de applicatie / config / routes.php-tabel
Voeg de volgende route toe
$route['ar'] = 'activerecordcontroller';
HIER,
- De route ar verwijst naar de indexmethode van de ActiveRecordController-klasse. Dit is standaard, daarom hebben we de indexmethode niet gespecificeerd zoals u deed voor de route die records invoegt
Ervan uitgaande dat de webserver al actief is, laadt u de volgende URL
http: // localhost: 3000 / ar
U zou resultaten moeten kunnen zien die sterk lijken op het volgende in uw webbrowser
CodeIgniter Actief record bijwerken
In deze sectie zullen we vertellen hoe u het actieve record kunt gebruiken om de database bij te werken. Stel dat we de klantnaam Joe Thomas willen updaten naar Joe.
Voeg de volgende methode toe aan de klasse ActiveRecordController
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 = […] definieert de velden en waarden die we willen bijwerken in de databasetabel
- $ this-> db-> waar ('id', 1); stelt de where-clausule van de updatevraag in
- $ this-> db-> update ('bestellingen', $ data); genereert de SQL-updatevraag en voert deze uit in onze database.
De bovenstaande code levert de volgende SQL-instructie op
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Laten we nu de routes.php applicatie / config / routes.php updaten
Voeg de volgende route toe
$route['ar/update'] = 'activerecordcontroller/update_order';
Sla de wijzigingen op
Laad de volgende URL in de webbrowser
Laten we nu de databaserecords weergeven en kijken of de wijzigingen zijn beïnvloed.
Zoals je kunt zien in de bovenstaande afbeelding, is het eerste record bijgewerkt van Joe Thomas naar Joe.
CodeIgniter Verwijder actief record
We zullen nu een record uit de database verwijderen. We zullen het record met de id van 3 verwijderen.
Voeg de volgende methode toe aan de ActiveRecordController
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
HIER,
- $ this-> db-> waar ('id', 1); stelt de where-clausule in
- $ this-> db-> delete ('bestellingen'); verwijdert de databaserij in de besteltabel op basis van de criteria die zijn ingesteld met behulp van de where-clausule.
Om de bovenstaande code uit te voeren, laadt u de volgende URL in onze webbrowser
http: // localhost: 3000 / ar / delete
Overzicht
In deze tutorial heeft u geleerd hoe u met een actief record kunt werken om records in de database in te voegen, bij te werken, te verwijderen en te selecteren. We werkten met statische waarden om records te maken, bij te werken en te verwijderen. In de volgende tutorial zullen we een gebruikersinterface maken die de gebruiker kan gebruiken om dynamisch records in de database te maken.