Codeigniter actief record: invoegen, selecteren, bijwerken, verwijderen

Inhoudsopgave:

Anonim

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.