Дані є кровною лінією більшості додатків. Дані потрібно зберігати таким чином, щоб їх можна було додатково аналізувати, щоб надати розуміння та полегшити ділові рішення. Дані зазвичай зберігаються в базі даних. Серед головних проблем при взаємодії з базою даних є безпека, простота доступу та реалізація структуризованої мови запитів (SQL) для постачальника баз даних.
Активний запис - це шаблон дизайну, який полегшує легку, безпечну та красномовну взаємодію з базою даних.
Активний запис має наступні переваги
- Вставляйте, оновлюйте та видаляйте записи за допомогою простих ланцюжків активних записів
- Подає введені користувачем дані безпечним способом, використовуючи параметри
- Дозволяє працювати з декількома механізмами баз даних, такими як MySQL, SQL Server тощо без перезапису коду програми
- CodeIgniter використовує драйвери, специфічні для кожного механізму бази даних у фоновому режимі.
У цьому підручнику ви дізнаєтесь:
- Як використовувати Active Record: Приклад
- Конфігурація бази даних CodeIgniter
- CodeIgniter Вставити активний запис
- CodeIgniter Виберіть Активний запис
- Оновлення активного запису CodeIgniter
- CodeIgniter Видалити активний запис
Як використовувати Active Record: Приклад
У цьому посібнику ми обговоримо базу даних підручників. У нас буде дві таблиці, одна із замовленнями, інша з деталями.
Цей підручник передбачає, що у вас встановлена та працює база даних MySQL.
Запустіть такі сценарії, щоб створити базу даних підручників:
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;
Вищезазначений код створює базу даних з назвою ci_active_record і створює дві таблиці, а саме замовлення та деталі_замовлень. Взаємозв'язок між двома таблицями визначається ідентифікатором стовпця в замовленнях та ідентифікатором замовлення в таблиці_деталів замовлення.
Конфігурація бази даних CodeIgniter
Тепер ми налаштуємо наш додаток, щоб мати можливість спілкуватися з цією базою даних.
Відкрийте файл конфігурації бази даних, який знаходиться в application / config / database.php
знайдіть наступні рядки у файлі конфігурації
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Оновіть наведений вище код до наступного
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Примітка: вам потрібно буде замінити ім’я користувача та пароль на ті, що відповідають вашій конфігурації MySQL.
На додаток до деталей конфігурації бази даних, нам також потрібно сказати CodeIgniter завантажувати бібліотеку бази даних при її завантаженні
Крок 1) Відкрийте наступний файл application / config / autoload.php
Крок 2) Знайдіть бібліотеки ключів масиву $ autoload та завантажте бібліотеку бази даних, як показано нижче
$autoload['libraries'] = array('database');
ТУТ,
- Наведений вище код завантажує бібліотеку бази даних під час запуску програми
CodeIgniter Вставити активний запис
Для тестування ми створимо контролер та визначимо маршрути, які ми використовуватимемо для взаємодії з нашим додатком через активний запис.
Створіть нову файлову програму / контролери / ActiveRecordController.php
Додайте наступний код до ActiveRecordController.php
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
ТУТ,
- $ data = […] визначає дані змінної масиву, які використовують імена таблиць бази даних як ключі масиву та присвоюють їм значення
- $ this-> db-> insert ('замовлення', $ дані); викликає метод вставки бібліотеки бази даних, передає в якості порядку параметри імен таблиці та змінну масиву $ data. Цей рядок генерує оператор SQL INSERT, використовуючи ключі масиву як імена полів, а значення масиву як значення, які потрібно вставити в базу даних.
Тепер, коли ми успішно створили метод контролера для активного запису, нам тепер потрібно буде створити маршрут, який ми будемо викликати для виконання методу контролера.
Тепер відкрийте route.php у додатку / config / routes.php
додайте наступний рядок до маршрутів
$route['ar/insert'] = 'activerecordcontroller/store_order';
ТУТ,
- Ми визначаємо маршрут ar / insert, який викликає store_order ActiveRecordController.
Давайте зараз запустимо веб-сервер, щоб перевірити наш метод.
Виконайте наступну команду, щоб запустити вбудований сервер для PHP
cd C:\Sites\ci-appphp -S localhost:3000
ТУТ,
- Наведений вище браузер команд в командний рядок і запустіть вбудований сервер з порту 3000.
Завантажте наступну URL-адресу у свій браузер
http: // localhost: 3000 / ar / insert
Ви отримаєте наступні результати
order has successfully been created
Відкрийте базу даних підручників MySQL і перевірте таблицю замовлень
Ви зможете створити новостворений рядок, як показано на малюнку нижче
CodeIgniter Виберіть Активний запис
У цьому розділі ми побачимо, як читати записи, які ми маємо в базі даних, і відображати їх у веб-браузері як невпорядкований список
Додайте наступний метод до ActiveRecordController
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
ТУТ,
- $ query = $ this-> db-> get ('замовлення'); запускає запит вибору за таблицею замовлень, вибираючи всі поля
- echo "
Список замовлень
"; відображає заголовок HTML розміру 3 - ехо "
- "; друкує початковий тег для невпорядкованого списку HTML
- foreach ($ query-> result () як $ row) {…} використовував цикл for для циклу між результатами, повернутими з бази даних. echo "
- $ row-> ім'я_замовника "; друкує ім'я клієнта з бази даних
Перш ніж завантажувати наступну URL-адресу, ви можете завантажити ще пару записів до бази даних.
Давайте тепер визначимо маршрут для запиту SELECT
Відкрийте таблицю application / config / routes.php
Додайте такий маршрут
$route['ar'] = 'activerecordcontroller';
ТУТ,
- Маршрут ar вказує на метод індексу класу ActiveRecordController. Це за замовчуванням, тому ми не вказали метод індексу, як це зробили для маршруту, який вставляє записи
Припускаючи, що веб-сервер вже запущений, завантажте таку URL-адресу
http: // localhost: 3000 / ar
Ви повинні бачити результати, які дуже схожі на наступні у вашому веб-браузері
Оновлення активного запису CodeIgniter
У цьому розділі ми розповімо про те, як використовувати активний запис для оновлення бази даних. Скажімо, ми хочемо оновити ім’я клієнта Джо Томас на Джо.
Додайте наступний метод до класу 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';}
ТУТ,
- $ data = […] визначає поля та значення, які ми хочемо оновити в таблиці бази даних
- $ this-> db-> where ('id', 1); встановлює речення where запиту оновлення
- $ this-> db-> update ('замовлення', $ дані); генерує запит на оновлення SQL і виконує його щодо нашої бази даних.
Наведений вище код створить наступний оператор SQL
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Давайте тепер оновимо додаток routes.php / config / routes.php
Додайте такий маршрут
$route['ar/update'] = 'activerecordcontroller/update_order';
Збережіть зміни
Завантажте наступну URL-адресу у веб-браузер
Давайте тепер покажемо записи бази даних і подивимося, чи це не вплинуло на зміни.
Як видно з наведеного вище Зображення, перший запис оновлено від Джо Томаса до Джо.
CodeIgniter Видалити активний запис
Тепер ми видалимо запис із бази даних. Ми видалимо запис із ідентифікатором 3.
Додайте наступний метод до ActiveRecordController
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
ТУТ,
- $ this-> db-> where ('id', 1); встановлює речення where
- $ this-> db-> delete ('замовлення'); видаляє рядок бази даних у таблиці замовлень на основі критеріїв, встановлених за допомогою пропозиції where.
Щоб виконати наведений вище код, завантажте наступну URL-адресу в наш веб-браузер
http: // localhost: 3000 / ar / delete
Резюме
У цьому посібнику ви дізналися, як працювати з активним записом для вставки, оновлення, видалення та вибору записів із бази даних. Ми працювали зі статичними значеннями для створення записів, оновлення та видалення. У наступному посібнику ми створимо користувальницький інтерфейс, який користувач може використовувати для динамічного створення записів у базі даних.