Codeigniter Active Record: Lisää, Valitse, Päivitä, Poista
Data on useimpien sovellusten verilinja. Tiedot on säilytettävä siten, että niitä voidaan analysoida edelleen oivallusten ja liiketoimintapäätösten helpottamiseksi. Tiedot tallennetaan yleensä tietokantaan. Tärkeimpiä huolenaiheita tietokannan kanssa käytettäessä ovat turvallisuus, helppokäyttöisyys ja tietokantatoimittajakohtaiset Structured Query Language (SQL) -toteutukset.
Aktiivinen tietue on suunnittelumalli, jonka avulla on helppo olla vuorovaikutuksessa tietokannan kanssa helposti, turvallisesti ja kaunopuheisesti.
Aktiivisella tietueella on seuraavat edut
- Lisää, päivitä ja poista tietueita yksinkertaisilla aktiivisten tietueiden menetelmäketjuilla
- Lähettää käyttäjän syötteen suojatulla tavalla parametrien avulla
- Voit työskennellä useiden tietokantaohjelmien kanssa, kuten MySQL, SQL Server jne. kirjoittamatta sovelluskoodia uudelleen
- CodeIgniter käyttää taustalla kullekin tietokantakoneelle erityisiä ohjaimia.
Aktiivisen tietueen käyttäminen: Esimerkki
Tässä opetusohjelmassa käsittelemme opetusohjelmatietokantaa. Meillä on kaksi pöytää, joista toisessa on tilaukset ja toisessa yksityiskohdat.
Tämä opetusohjelma olettaa, että sinulla on MySQL tietokanta asennettuna ja käynnissä.
Luo opetusohjelmatietokanta suorittamalla seuraavat komentosarjat:
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;
Yllä oleva koodi luo tietokannan nimeltä ci_active_record ja luo kaksi taulukkoa, nimittäin tilaukset ja order_details. Kahden taulukon välinen suhde määritellään sarakkeen id:llä tilauksissa ja order_id:llä order_details -taulukossa.
CodeIgniter-tietokannan määritys
Määritämme nyt sovelluksemme kommunikoimaan tämän tietokannan kanssa.
Avaa tietokannan määritystiedosto, joka sijaitsee osoitteessa application/config/database.php
etsi seuraavat rivit asetustiedostosta
'hostname' => 'localhost', 'username' => '', 'password' => '', 'database' => '',
Päivitä yllä oleva koodi seuraavaksi
'hostname' => 'localhost', 'username' => 'root', 'password' => 'letmein', 'database' => 'ci_active_record',
Huomautus: sinun on vaihdettava käyttäjätunnus ja salasana niille, jotka vastaavat määrityksiäsi MySQL.
Tietokannan määritystietojen lisäksi meidän on myös kerrottava CodeIgniterille, että se lataa tietokantakirjaston, kun se latautuu
Vaihe 1) Avaa seuraava tiedosto application/config/autoload.php
Vaihe 2) Etsi $autoload array -avainkirjastot ja lataa tietokantakirjasto alla olevan kuvan mukaisesti
$autoload['libraries'] = array('database');
TÄSSÄ,
- Yllä oleva koodi lataa tietokantakirjaston, kun sovellus käynnistyy
CodeIgniter Lisää aktiivinen tietue
Testaustarkoituksia varten luomme ohjaimen ja määritellyt reitit, joita käytämme vuorovaikutuksessa sovelluksemme kanssa aktiivisen tietueen kautta.
Luo uusi tiedosto application/controllers/ActiveRecordController.php
Lisää seuraava koodi tiedostoon 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'; } }
TÄSSÄ,
- $data = […] määrittää taulukon muuttujan tiedot, joka käyttää tietokantataulukoiden nimiä taulukkoavaimina ja antaa niille arvoja
- $this->db->insert('tilaukset', $data); kutsuu tietokantakirjaston insert-menetelmän, välittää taulukon nimijärjestykset ja taulukkomuuttujan $data parametriksi. Tämä rivi luo SQL INSERT -käskyn käyttämällä taulukon avaimia kenttien niminä ja taulukon arvoja tietokantaan lisättävinä arvoina.
Nyt kun olemme onnistuneesti luoneet ohjainmenetelmän aktiiviselle tietueelle, meidän on nyt luotava reitti, jota kutsumme suorittaaksemme ohjainmenetelmän.
Avaa nyt routes.php hakemistosta application/config/routes.php
lisää seuraava rivi reitteihin
$route['ar/insert'] = 'activerecordcontroller/store_order';
TÄSSÄ,
- Määrittelemme reitin ar/insert, joka kutsuu ActiveRecordControllerin store_orderin.
Aloitetaan nyt verkkopalvelin testataksemme menetelmäämme.
Käynnistä PHP:n sisäänrakennettu palvelin suorittamalla seuraava komento
cd C:\Sites\ci-app php -S localhost:3000
TÄSSÄ,
- Yllä oleva komentoselain komentoriville ja käynnistä sisäänrakennettu palvelin portista 3000.
Lataa seuraava URL-osoite selaimeesi
http://localhost:3000/ar/insert
Saat seuraavat tulokset
order has successfully been created
Avaa MySQL opetusohjelmatietokanta ja tarkista tilaustaulukko
Voit luoda uuden rivin alla olevan kuvan mukaisesti
CodeIgniter Valitse Active Record
Tässä osiossa näemme kuinka lukea tietokannassamme olevat tietueet ja näyttää ne verkkoselaimessa järjestämättömänä luettelona
Lisää seuraava menetelmä ActiveRecordControlleriin
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>"; }
TÄSSÄ,
- $kysely = $this->db->get('tilaukset'); suorittaa valintakyselyn tilaustaulukkoa vastaan ja valitsee kaikki kentät
- kaiku" Tilausten listaus ”; näyttää HTML-otsikon, jonka koko on 4
- kaiku" ”; tulostaa järjestämättömän HTML-luettelon avaustunnisteen
- foreach ($query->result() $rivinä) {…} käytti for-silmukkaa tietokannasta palautettujen tulosten läpikäymiseen. kaiku" $rivi->asiakkaan_nimi ”; tulostaa asiakkaan_nimen tietokannasta
Ennen kuin lataat seuraavan URL-osoitteen, voit ladata vielä muutama tietue tietokantaan.
Määritetään nyt reitti SELECT-kyselylle
Avaa application/config/routes.php-taulukko
Lisää seuraava reitti
$route['ar'] = 'activerecordcontroller';
TÄSSÄ,
- Reitti ar osoittaa ActiveRecordController-luokan indeksimenetelmään. Tästä syystä emme ole määrittäneet indeksimenetelmää kuten teit tietueita lisäävälle reitille
Olettaen, että verkkopalvelin on jo käynnissä, lataa seuraava URL-osoite
http://localhost:3000/ar
Sinun pitäisi pystyä näkemään tuloksia, jotka ovat hyvin samankaltaisia kuin seuraavat selaimessasi
CodeIgniter Päivitä aktiivinen tietue
Tässä osiossa puhumme aktiivisen tietueen käyttämisestä tietokannan päivittämiseen. Oletetaan, että haluamme päivittää asiakkaan nimen Joe Thomas nimeksi Joe.
Lisää seuraava menetelmä ActiveRecordController-luokkaan
public function update_order() { $data = [ 'customer_name' => 'Joe', ]; $this->db->where('id', 1); $this->db->update('orders', $data); echo 'order has successfully been updated'; }
TÄSSÄ,
- $data = […] määrittää kentät ja arvot, jotka haluamme päivittää tietokantataulukossa
- $this->db->where('id', 1); asettaa päivityskyselyn where-lauseen
- $this->db->update('tilaukset', $data); luo SQL-päivityskyselyn ja suorittaa sen tietokantaamme vastaan.
Yllä oleva koodi tuottaa seuraavan SQL-käskyn
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Päivitetään nyt tiedosto routes.php application/config/routes.php
Lisää seuraava reitti
$route['ar/update'] = 'activerecordcontroller/update_order';
Tallenna muutokset
Lataa seuraava URL-osoite verkkoselaimeen
Näytetään nyt tietokannan tietueet ja katsotaan, ovatko muutokset vaikuttaneet.
Kuten yllä annetusta kuvasta näkyy, ensimmäinen ennätys on päivitetty Joe Thomasista Joelle.
CodeIgniter Poista aktiivinen tietue
Poistamme nyt tietueen tietokannasta. Poistamme tietueen tunnuksella 3.
Lisää seuraava menetelmä ActiveRecordControlleriin
public function delete_order() { $this->db->where('id', 3); $this->db->delete('orders'); echo 'order has successfully been deleted'; }
TÄSSÄ,
- $this->db->where('id', 1); asettaa missä-lauseen
- $this->db->delete('tilaukset'); poistaa tietokannan rivin tilaustaulukosta where-lauseella asetettujen ehtojen perusteella.
Suorita yllä oleva koodi lataamalla seuraava URL-osoite verkkoselaimeemme
http://localhost:3000/ar/delete
Yhteenveto
Tässä opetusohjelmassa olet oppinut työskentelemään aktiivisen tietueen kanssa tietueiden lisäämiseksi, päivittämiseksi, poistamiseksi ja valitsemiseksi tietokannasta. Työskentelimme staattisten arvojen kanssa tietueiden luomiseksi, päivittämiseksi ja poistamiseksi. Seuraavassa opetusohjelmassa luomme käyttöliittymän, jonka avulla käyttäjä voi luoda tietueita dynaamisesti tietokantaan.