Codeigniter Active Record: Wstaw, Wybierz, Aktualizuj, Usuń

Spisie treści:

Anonim

Dane są linią krwi większości aplikacji. Dane muszą być przechowywane w taki sposób, aby można je było dalej analizować w celu uzyskania wglądu i ułatwienia decyzji biznesowych. Dane są zwykle przechowywane w bazie danych. Jednym z głównych problemów związanych z interakcją z bazą danych jest bezpieczeństwo, łatwość dostępu i implementacje języka SQL (Structured Query Language) specyficzne dla dostawcy bazy danych.

Active record to wzorzec projektowy, który ułatwia interakcję z bazą danych w łatwy, bezpieczny i elokwentny sposób.

Aktywny rekord ma następujące zalety

  • Wstawianie, aktualizowanie i usuwanie rekordów za pomocą prostych łańcuchów metod aktywnego rekordu
  • Wysyła dane wejściowe użytkownika w bezpieczny sposób przy użyciu parametrów
  • Umożliwia pracę z wieloma silnikami baz danych, takimi jak MySQL, SQL Server itp. Bez przepisywania kodu aplikacji
  • CodeIgniter używa w tle sterowników specyficznych dla każdego silnika bazy danych.

W tym samouczku dowiesz się:

  • Jak korzystać z modułu Active Record: przykład
  • Konfiguracja bazy danych CodeIgniter
  • CodeIgniter Wstaw rekord aktywny
  • CodeIgniter Wybierz Active Record
  • CodeIgniter Update Active Record
  • CodeIgniter Usuń aktywny rekord

Jak korzystać z modułu Active Record: przykład

W tym samouczku omówimy bazę danych samouczków. Będziemy mieć dwa stoliki, jeden z zamówieniami, drugi ze szczegółami.

W tym samouczku założono, że masz zainstalowaną i uruchomioną bazę danych MySQL.

Uruchom następujące skrypty, aby utworzyć bazę danych samouczków:

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;

Powyższy kod tworzy bazę danych o nazwie ci_active_record i tworzy dwie tabele, a mianowicie zamówienia i szczegóły_zamówień. Relacja między dwiema tabelami jest zdefiniowana przez identyfikator kolumny w order_id w tabeli order_details i order_id.

Konfiguracja bazy danych CodeIgniter

Skonfigurujemy teraz naszą aplikację, aby mogła komunikować się z tą bazą danych.

Otwórz plik konfiguracyjny bazy danych znajdujący się w application / config / database.php

zlokalizuj następujące wiersze w pliku konfiguracyjnym

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

Zaktualizuj powyższy kod do następującego

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

Uwaga: musisz zmienić nazwę użytkownika i hasło na te, które pasują do twojej konfiguracji MySQL.

Oprócz szczegółów konfiguracji bazy danych, musimy również powiedzieć CodeIgniter, aby załadował bibliotekę bazy danych podczas jej ładowania

Krok 1) Otwórz następujący plik application / config / autoload.php

Krok 2) Zlokalizuj biblioteki kluczy tablicy $ autoload i załaduj bibliotekę bazy danych, jak pokazano poniżej

$autoload['libraries'] = array('database');

TUTAJ,

  • Powyższy kod ładuje bibliotekę bazy danych podczas uruchamiania aplikacji

CodeIgniter Wstaw rekord aktywny

Do celów testowych utworzymy kontroler i zdefiniowane trasy, których będziemy używać do interakcji z naszą aplikacją za pośrednictwem aktywnego rekordu.

Utwórz nowy plik application / controllers / ActiveRecordController.php

Dodaj następujący kod do ActiveRecordController.php

 '2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}

TUTAJ,

  • $ data = […] definiuje zmienną tablicową data, która używa nazw tabel bazy danych jako kluczy tablicowych i przypisuje im wartości
  • $ this-> db-> insert ('zamówienia', $ dane); wywołuje metodę wstawiania biblioteki bazy danych, przekazuje kolejność nazw tabel i zmienną tablicową $ data jako parametr. Ten wiersz generuje instrukcję SQL INSERT, używając kluczy tablic jako nazw pól i wartości tablicowych jako wartości do wstawienia do bazy danych.

Teraz, gdy pomyślnie utworzyliśmy metodę kontrolera dla aktywnego rekordu, będziemy teraz musieli utworzyć trasę, którą będziemy wywoływać w celu wykonania metody kontrolera.

Teraz otwórz route.php w application / config / tours.php

dodaj następujący wiersz do tras

$route['ar/insert'] = 'activerecordcontroller/store_order';

TUTAJ,

  • Definiujemy trasę ar / insert, która wywołuje store_order kontrolera ActiveRecordController.

Uruchommy teraz serwer WWW, aby przetestować naszą metodę.

Uruchom następujące polecenie, aby uruchomić wbudowany serwer dla PHP

cd C:\Sites\ci-appphp -S localhost:3000

TUTAJ,

  • Powyższa przeglądarka poleceń do wiersza poleceń i uruchom wbudowany serwer na porcie 3000.

Załaduj następujący adres URL do swojej przeglądarki

http: // localhost: 3000 / ar / insert

Otrzymasz następujące wyniki

order has successfully been created

Otwórz bazę danych samouczków MySQL i sprawdź tabelę zamówień

Będziesz mógł utworzyć nowo utworzony wiersz, jak pokazano na poniższym obrazku

CodeIgniter Wybierz Active Record

W tej sekcji zobaczymy, jak odczytać rekordy, które mamy w bazie danych i wyświetlić je w przeglądarce internetowej jako nieuporządkowaną listę

Dodaj następującą metodę do ActiveRecordController

public function index() {$query = $this->db->get('orders');echo "

Orders Listing

";echo "
    ";foreach ($query->result() as $row) {echo "
  • $row->customer_name
  • ";}echo "
";}

TUTAJ,

  • $ query = $ this-> db-> get ('orders'); uruchamia zapytanie wybierające w tabeli zamówień, wybierając wszystkie pola
  • echo "

    Lista zamówień

    "; wyświetla nagłówek HTML o rozmiarze 3
  • echo "
      "; wypisuje tag otwierający dla nieuporządkowanej listy HTML
    • foreach ($ query-> result () as $ row) {…} użyło pętli for do przeglądania wyników zwróconych z bazy danych. echo "
    • $ row-> customer_name
    • "; drukuje customer_name z bazy danych

    Zanim załadujesz następujący adres URL, możesz załadować kilka dodatkowych rekordów do bazy danych.

    Teraz zdefiniujmy trasę dla zapytania SELECT

    Otwórz tabelę application / config / tours.php

    Dodaj następującą trasę

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

    TUTAJ,

    • Trasa ar wskazuje na metodę indeksu klasy ActiveRecordController. Jest to domyślne ustawienie, dlatego nie określiliśmy metody indeksu, tak jak w przypadku trasy, która wstawia rekordy

    Zakładając, że serwer WWW już działa, załaduj następujący adres URL

    http: // localhost: 3000 / ar

    W przeglądarce internetowej powinieneś być w stanie zobaczyć wyniki, które są bardzo podobne do poniższych

    CodeIgniter Update Active Record

    W tej sekcji omówimy, jak używać aktywnego rekordu do aktualizowania bazy danych. Powiedzmy, że chcemy zmienić nazwę klienta Joe Thomas na Joe.

    Dodaj następującą metodę do klasy 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';}

    TUTAJ,

    • $ data = […] definiuje pola i wartości, które chcemy zaktualizować w tabeli bazy danych
    • $ this-> db-> gdzie ('id', 1); ustawia klauzulę where zapytania aktualizującego
    • $ this-> db-> update ('zamówienia', $ dane); generuje zapytanie aktualizacyjne SQL i wykonuje je w naszej bazie danych.

    Powyższy kod wygeneruje następującą instrukcję SQL

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

    Zaktualizujmy teraz plik Routes.php / config / Routes.php

    Dodaj następującą trasę

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

    Zapisz zmiany

    Załaduj następujący adres URL w przeglądarce internetowej

    Wyświetlmy teraz rekordy bazy danych i zobaczmy, czy zmiany zostały zmienione.

    Jak widać na powyższym obrazku, pierwszy rekord został zaktualizowany z Joe Thomasa na Joe.

    CodeIgniter Usuń aktywny rekord

    Teraz usuniemy rekord z bazy danych. Usuniemy rekord o identyfikatorze 3.

    Dodaj następującą metodę do ActiveRecordController

    public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}

    TUTAJ,

    • $ this-> db-> gdzie ('id', 1); ustawia klauzulę where
    • $ this-> db-> delete ('zamówienia'); usuwa wiersz bazy danych w tabeli zamówień na podstawie kryteriów ustawionych za pomocą klauzuli where.

    Aby wykonać powyższy kod, załaduj następujący adres URL w naszej przeglądarce internetowej

    http: // localhost: 3000 / ar / delete

    Podsumowanie

    W tym samouczku nauczyłeś się, jak pracować z aktywnym rekordem, aby wstawiać, aktualizować, usuwać i wybierać rekordy z bazy danych. Pracowaliśmy z wartościami statycznymi, aby tworzyć rekordy, aktualizować i usuwać. W następnym samouczku utworzymy interfejs użytkownika, którego użytkownik może użyć do dynamicznego tworzenia rekordów w bazie danych.