Данные являются родословной большинства приложений. Данные должны храниться таким образом, чтобы их можно было дополнительно проанализировать, чтобы получить представление и облегчить принятие деловых решений. Данные обычно хранятся в базе данных. Среди основных проблем при взаимодействии с базой данных — безопасность, простота доступа и специфичные для поставщика базы данных реализации языка структурированных запросов (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 и создает две таблицы, а именно, orders и order_details. Связь между двумя таблицами определяется идентификатором столбца в orders и идентификатором 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) Откройте следующий файл application / config / autoload.php
Шаг 2) Найдите библиотеки ключей массива $ autoload и загрузите библиотеку базы данных, как показано ниже
$autoload['libraries'] = array('database');
ВОТ,
- Приведенный выше код загружает библиотеку базы данных при запуске приложения
CodeIgniter Вставить активную запись
В целях тестирования мы создадим контроллер и определим маршруты, которые мы будем использовать для взаимодействия с нашим приложением через активную запись.
Создайте новый файл приложения / controllers / ActiveRecordController.php
Добавьте следующий код в 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'; } }
ВОТ,
- $ data = […] определяет данные переменной массива, которые используют имена таблиц базы данных в качестве ключей массива и присваивают им значения
- $ this-> db-> insert (‘orders’, $ data); вызывает метод вставки библиотеки базы данных, передает в качестве параметра порядки имен таблиц и переменную массива $ data. Эта строка генерирует инструкцию SQL INSERT, используя ключи массива в качестве имен полей и значения массива в качестве значений, которые будут вставлены в базу данных.
Теперь, когда мы успешно создали метод контроллера для активной записи, теперь нам нужно создать маршрут, который мы будем вызывать для выполнения метода контроллера.
Теперь откройте route.php в приложении / config / rout.php
добавьте следующую строку в маршруты
$route['ar/insert'] = 'activerecordcontroller/store_order';
ВОТ,
- Мы определяем маршрут ar / insert, который вызывает store_order ActiveRecordController.
Теперь давайте запустим веб-сервер для тестирования нашего метода.
Запустите следующую команду, чтобы запустить встроенный сервер для PHP
cd C:\Sites\ci-app php -S localhost:3000
ВОТ,
- Выше приведите команду браузера к командной строке и запустите встроенный сервер на порту 3000.
Загрузите следующий URL в ваш браузер
HTTP: // локальный: 3000 / ар / вставка
Вы получите следующие результаты
order has successfully been created
Откройте учебную базу данных MySQL и проверьте таблицу заказов
Вы сможете вновь создать строку, как показано на рисунке ниже
CodeIgniter Выбрать активную запись
В этом разделе мы увидим, как читать записи, которые есть в базе данных, и отображать их в веб-браузере в виде неупорядоченного списка.
Добавьте следующий метод в ActiveRecordController
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>"; }
ВОТ,
- $ query = $ this-> db-> get (‘orders’); выполняет запрос на выборку таблицы заказов, выбирая все поля
- echo «<h4> Распечатка заказов </ h4>»; отображает заголовок HTML размером 3
- echo «<ul>»; печатает открывающий тег для неупорядоченного списка HTML
- foreach ($ query-> result () как $ row) {…} использовал цикл for для циклического просмотра результатов, возвращаемых из базы данных. echo «<li> $ row-> customer_name </ li>»; печатает имя клиента из базы данных
Прежде чем загрузить следующий URL, вы можете загрузить еще пару записей в базу данных.
Теперь давайте определим маршрут для запроса SELECT
Откройте таблицу application / config / rout.php
Добавьте следующий маршрут
$route['ar'] = 'activerecordcontroller';
ВОТ,
- Маршрут ar указывает на метод индекса класса ActiveRecordController. Это по умолчанию, поэтому мы не указали метод индекса, как вы указали для маршрута, который вставляет записи
Предполагая, что веб-сервер уже запущен, загрузите следующий URL
Вы должны быть в состоянии увидеть результаты, которые очень похожи на следующие в вашем веб-браузере
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 (‘orders’, $ data); генерирует запрос на обновление SQL и выполняет его для нашей базы данных.
Приведенный выше код создаст следующую инструкцию SQL
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Давайте теперь обновим приложение rout.php / config / rout.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-> Удалить ( ‘заказов’); удаляет строку базы данных в таблице заказов на основе критериев, заданных с помощью предложения where.
Чтобы выполнить приведенный выше код, загрузите следующий URL в нашем веб-браузере.
HTTP: // локальный: 3000 / ар / удаление
Резюме
Из этого урока вы узнали, как работать с активной записью для вставки, обновления, удаления и выбора записей из базы данных. Мы работали со статическими значениями для создания записей, обновления и удаления. В следующем уроке мы создадим пользовательский интерфейс, который пользователь сможет использовать для динамического создания записей в базе данных.