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.