Codeigniter Active Record: вставить, выбрать, обновить, удалить

Содержание:

Anonim

Данные - это родословная большинства приложений. Данные должны храниться таким образом, чтобы их можно было анализировать для дальнейшего анализа и облегчения принятия бизнес-решений. Данные обычно хранятся в базе данных. Среди основных проблем при взаимодействии с базой данных - безопасность, простота доступа и реализация языка структурированных запросов (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 / удалить

    Резюме

    В этом руководстве вы узнали, как работать с активной записью для вставки, обновления, удаления и выбора записей из базы данных. Мы работали со статическими значениями для создания записей, обновления и удаления. В следующем руководстве мы создадим пользовательский интерфейс, который пользователь сможет использовать для динамического создания записей в базе данных.