Данните са кръвната линия на повечето приложения. Данните трябва да се съхраняват по такъв начин, че да могат да бъдат допълнително анализирани, за да предоставят прозрения и да улеснят бизнес решенията. Данните обикновено се съхраняват в базата данни. Сред основните опасения при взаимодействието с базата данни е сигурността, лекотата на достъп и специфичните за доставчика на базата данни реализации на Структуриран език за заявки (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 и създава две таблици, а именно поръчки и подробности за поръчката. Връзката между двете таблици се дефинира от идентификатора на колоната в поръчки и order_id в таблицата order_details.
Конфигуриране на база данни на CodeIgniter
Сега ще конфигурираме нашето приложение, за да може да комуникира с тази база данни.
Отворете конфигурационния файл на базата данни, намиращ се в application / config / database.php
намерете следните редове в конфигурационния файл
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Актуализирайте горния код до следното
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Забележка: ще трябва да замените потребителското име и паролата с тези, които съответстват на вашата конфигурация на MySQL.
В допълнение към подробностите за конфигурацията на базата данни, ние също трябва да кажем на CodeIgniter да зарежда библиотеката на базата данни, когато се зарежда
Стъпка 1) Отворете следното файлово приложение / 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, като използва ключовете на масива като имена на полета и стойностите на масива като стойностите, които трябва да се вмъкнат в базата данни.
След като успешно създадохме метода на контролера за активен запис, сега ще трябва да създадем маршрут, който ще извикаме, за да изпълним метода на контролера.
Сега отворете маршрути.php в application / 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-> client_name "; отпечатва името на клиента от базата данни
Преди да заредите следния 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
Обобщение
В този урок сте научили как да работите с активен запис за вмъкване, актуализиране, изтриване и избор на записи от базата данни. Работихме със статични стойности за създаване на записи, актуализиране и изтриване. В следващия урок ще създадем потребителски интерфейс, който потребителят може да използва за динамично създаване на записи в базата данни.