Данные - это родословная большинства приложений. Данные должны храниться таким образом, чтобы их можно было анализировать для дальнейшего анализа и облегчения принятия бизнес-решений. Данные обычно хранятся в базе данных. Среди основных проблем при взаимодействии с базой данных - безопасность, простота доступа и реализация языка структурированных запросов (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 Вставить активную запись
В целях тестирования мы создадим контроллер и определим маршруты, которые мы будем использовать для взаимодействия с нашим приложением через активную запись.
Создайте новый файл application / controllers / 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 = […] определяет переменную массива data, которая использует имена таблиц базы данных в качестве ключей массива и присваивает им значения
- $ this-> db-> insert ('заказы', $ data); вызывает метод вставки библиотеки базы данных, передает в качестве параметра имена таблиц и переменную массива $ data. Эта строка генерирует оператор SQL INSERT с использованием ключей массива в качестве имен полей и значений массива в качестве значений для вставки в базу данных.
Теперь, когда мы успешно создали метод контроллера для активной записи, теперь нам нужно создать маршрут, который мы будем вызывать для выполнения метода контроллера.
Теперь откройте routes.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: // локальный: 3000 / ар / вставить
Вы получите следующие результаты
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 () as $ row) {…} использовал цикл for для просмотра результатов, возвращаемых из базы данных. echo "
- $ row-> имя_клиента "; печатает customer_name из базы данных
Прежде чем загрузить следующий URL-адрес, вы можете загрузить еще пару записей в базу данных.
Теперь давайте определим маршрут для запроса SELECT.
Откройте таблицу application / config / routes.php
Добавьте следующий маршрут
$route['ar'] = 'activerecordcontroller';
ЗДЕСЬ,
- Маршрут ar указывает на метод индекса класса ActiveRecordController. Это по умолчанию, поэтому мы не указали метод индекса, как вы сделали для маршрута, который вставляет записи.
Предполагая, что веб-сервер уже запущен, загрузите следующий URL-адрес
http: // локальный: 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-> где ('id', 1); устанавливает предложение where запроса на обновление
- $ this-> db-> update ('заказы', $ data); генерирует запрос на обновление SQL и выполняет его в нашей базе данных.
Приведенный выше код создаст следующий оператор SQL
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Теперь давайте обновим файл routes.php application / 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-> где ('id', 1); устанавливает предложение where
- $ this-> db-> delete ('заказы'); удаляет строку базы данных в таблице заказов на основе критериев, установленных с помощью предложения where.
Чтобы выполнить приведенный выше код, загрузите следующий URL-адрес в наш веб-браузер.
http: // локальный: 3000 / ar / удалить
Резюме
В этом руководстве вы узнали, как работать с активной записью для вставки, обновления, удаления и выбора записей из базы данных. Мы работали со статическими значениями для создания записей, обновления и удаления. В следующем руководстве мы создадим пользовательский интерфейс, который пользователь сможет использовать для динамического создания записей в базе данных.