Codeigniter Actief record: Invoegen, Selecteren, Bijwerken, Verwijderen

Data vormen de bloedlijn van de meeste toepassingen. 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 aandachtspunten bij de interactie met de database zijn beveiliging, toegankelijkheid en databaseleverancierspecifieke implementaties van Structured Query Language (SQL).

Actief 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 following voordelen

  • Records invoegen, bijwerken en verwijderen met eenvoudige methodeketens van actieve records
  • Verzendt de gebruikersinvoer op een veilige manier met behulp van parameters
  • Hiermee kunt u met meerdere database-engines werken, zoals MySQL, SQL Server, enz. zonder de applicatiecode te herschrijven
  • CodeIgniter gebruikt stuurprogramma's die specifiek zijn voor elke database-engine op de achtergrond.

Hoe u Active Record gebruikt: voorbeeld

In deze tutorial bespreken we de tutorialdatabase. We zullen twee tafels hebben, één met bestellingen en de andere met details.

In deze tutorial wordt ervan uitgegaan dat de MySQL-database actief is geïnstalleerd.

Voer het volgende uitwing scripts om een ​​tutorialdatabase 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 gedefinieerd door de kolom-ID in orders en order_id in order_details tafel.

CodeIgniter-databaseconfiguratie

We zullen nu onze applicatie configureren om met deze database te kunnen communiceren.

Open het databaseconfiguratiebestand in application/config/database.php

zoek de volgendewing regels in het configuratiebestand

'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',

Werk de bovenstaande code bij naar het volgendewing

'hostname' => 'localhost',
	'username' => 'root',
	'password' => 'letmein',
	'database' => 'ci_active_record',

Opmerking: u zult de gebruikersnaam en het wachtwoord moeten vervangen door degene die overeenkomen met uw configuratie MySQL.

Naast de databaseconfiguratie details, moeten we CodeIgniter ook vertellen dat de databasebibliotheek moet worden geladen wanneer deze wordt geladen

Stap 1) Open het volgendewing bestandstoepassing/config/autoload.php

Stap 2) Zoek de $autoload array-sleutelbibliotheken 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 creëren die we zullen gebruiken om via actieve records met onze applicatie te communiceren.

Maak een nieuw bestand application/controllers/ActiveRecordController.php

Voeg de volgende toewing code naar ActiveRecordController.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class ActiveRecordController extends CI_Controller {
    public function store_order(){
        $data = [
            'date' => '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 arrayvariabele data die databasetabelnamen gebruikt als arraysleutels en wijst er waarden aan toe
  • $this->db->insert('bestellingen', $data); roept de invoegmethode van de databasebibliotheek aan, geeft de volgorde van de tabelnamen en de arrayvariabele $data als parameter door. Deze regel genereert de SQL INSERT-instructie met behulp van de arraysleutels als veldnamen en de arraywaarden als de waarden die in de database moeten worden ingevoegd.

Nu we met succes de controllermethode voor actieve records 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 toewing lijn naar 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 het volgende uitwing commando om de ingebouwde server voor PHP te starten

cd C:\Sites\ci-app
php -S localhost:3000

HIER,

  • De bovenstaande opdrachtbrowser naar de opdrachtregel en start de ingebouwde server op poort 3000.

Laad de volgendewing URL naar uw browser

http://localhost:3000/ar/insert

Je krijgt het vervolgwing

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 Actieve record invoegen

CodeIgniter Selecteer Actief record

In deze sectie zullen we zien hoe we de records die we in de database hebben, kunnen lezen en deze in de webbrowser kunnen weergeven als een ongeordende lijst

Voeg de volgende toewing methode naar de ActiveRecordController

public function index() {
        $query = $this->db->get('orders');
        
        echo "<h3>Orders Listing</h3>";
        echo "<ul>";
        
        foreach ($query->result() as $row) {
            echo "<li>$row->customer_name</li>";
        }
        
        echo "</ul>";
    }

HIER,

  • $query = $dit->db->get('bestellingen'); voert de selectiequery uit op basis van de ordertabel en selecteert alle velden
  • echo “ Bestellingenlijst ”; geeft een HTML-kop van grootte 4 weer
  • echo “ ”; drukt de openingstag af voor een niet-geordende HTML-lijst
  • foreach ($query->result() as $row) {…} gebruikte de for-lus om de resultaten uit de database te doorlopen. echo “ $row->klantnaam ”; drukt de klantnaam uit de database af

Voordat u het following URL, kunt u nog een paar records in de database laden.

Laten we nu een route definiëren voor de SELECT-query

Open de tabel application/config/routes.php

Voeg de volgende toewing route

$route['ar'] = 'activerecordcontroller';

HIER,

  • De route ar verwijst naar de indexmethode van de klasse ActiveRecordController. Dit is standaard en 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 het bestand following URL

http://localhost:3000/ar

Je zou resultaten moeten kunnen zien die sterk lijken op de volgende resultatenwing in uw webbrowser

CodeIgniter Selecteer Actief record

CodeIgniter werkt actief record bij

In deze sectie zullen we bespreken hoe u het actieve record kunt gebruiken om de database bij te werken. Stel dat we de klantnaam Joe Thomas willen bijwerken naar Joe.

Voeg de volgende toewing methode naar 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 in de databasetabel willen bijwerken
  • $this->db->where('id', 1); stelt de Where-clausule van de updatequery in
  • $this->db->update('bestellingen', $data); genereert de SQL-updatequery en voert deze uit op onze database.

De bovenstaande code produceert het volgendewing SQL-instructie

UPDATE orders SET customer_name = 'Joe' WHERE id = 1;

Laten we nu de routes.php-applicatie/config/routes.php bijwerken

Voeg de volgende toewing route

$route['ar/update'] = 'activerecordcontroller/update_order';

Sla de wijzigingen op

Laad de volgendewing URL in de webbrowser

CodeIgniter werkt actief record bij

Laten we nu de databaserecords weergeven en kijken of de wijzigingen zijn doorgevoerd.

CodeIgniter werkt actief record bij

Zoals u kunt zien in de bovenstaande afbeelding, is de eerste record bijgewerkt van Joe Thomas naar Joe.

CodeIgniter Actieve record verwijderen

We zullen nu een record uit de database verwijderen. We zullen de record met de id 3 verwijderen.

Voeg de volgende toewing methode naar de ActiveRecordController

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); stelt de Where-clausule in
  • $this->db->delete('bestellingen'); verwijdert de databaserij in de ordertabel op basis van de criteria die zijn ingesteld met behulp van de WHERE-clausule.

Om de bovenstaande code uit te voeren, laadt u het bestand following URL in onze webbrowser

http://localhost:3000/ar/delete

Samengevat

In deze tutorial heeft u geleerd hoe u met een actief record kunt werken om records uit de database in te voegen, bij te werken, te verwijderen en te selecteren. We hebben met statische waarden gewerkt om records te maken, bij te werken en te verwijderen. In de volgende zelfstudie maken we een gebruikersinterface die de gebruiker kan gebruiken om records dynamisch in de database te maken.