Статьи и инструкции: Использование Active Record
Что такое Active Record?
Active Record - это один из популярных способов доступа к данным, которые содержатся в Базе Данных сайта.
Использовать Active Record можно как в сниппетах так и в контроллерах и моделях.
Для использования Active Record в сниппете не нужно совершать никаких дополнительных действий, можно начать использовать методы сразу.
Для использования Active Record в контроллерах и моделях необходимо сначала установить соединение с БД, используя конструкцию:
$this->load->database();
Обычно это делается в конструкторе (__construct) - если речь идет о контроллере. Таким образом, в любой вашей модели, связанной с этим контроллером, не нужно будет производить каких-либо дополнительных действий и Active Record будет также доступен и там.
Все методы Active Record содержатся в объекте $this->db
Константы из руководства:
- YOUR_QUERY - любой корректный SQL-запрос
- DB_TABLE - таблица из вашей БД с которой идет взаимодействие
- SELECT - строка с набором полей для выборки из БД
1) Выполнение произвольного SQL-запроса (необходимо в случае, если ни один из методов Active Record или SmartRiver вам не подходит и нужно написать что-то уникальное):
Стандартное выполнение
$this->db->query(YOUR_QUERY);
Если необходимо получить массив данных (только для выборки)
$this->db->query(YOUR_QUERY)->result_array();
Если необходимо получить объект данных (только для выборки)
$this->db->query(YOUR_QUERY)->result();
Если необходимо получить одиночный объект (только для выборки)
$this->db->query(YOUR_QUERY)->row();
2) Получение скомпилированного запроса на добавление данных
$sql = $this->db->set($data)->get_compiled_insert(DB_TABLE);
$sql - полученная строка с запросом
$data - массив данных для вставки
Чтобы выполнить полученный запрос, необходимо использовать метод из п.1, т.е $this->db->query($sql);
Получить ID только что созданного элемента можно с помощью метода $this->db->insert_id();
3) Получение скомпилированного запроса на обновление данных
$sql = $this->db->where($where)->set($data)->get_compiled_update(DB_TABLE);
$sql - полученная строка с запросом
$where - массив с условиями обновления
$data - массив данных для обновления
Чтобы выполнить полученный запрос, необходимо использовать метод из п.1, т.е $this->db->query($sql);
4) Непосредственное добавление записи
$this->db->insert(DB_TABLE, $data);
$data - массив данных для вставки
Получить ID только что созданного элемента можно с помощью метода $this->db->insert_id();
5) Непосредственное обновление записи
$this->db->where($where)->update(DB_TABLE, $data);
$where - массив с условиями обновления
$data - массив данных для обновления
6) Получение данных
массив данных
$this->db->where($where)->select(SELECT)->get(DB_TABLE)->result_array();
объект данных
$this->db->where($where)->select(SELECT)->get(DB_TABLE)->result();
одиночный объект
$this->db->where($where)->select(SELECT)->get(DB_TABLE)->row();
7) Удаление записи
$this->db->where($where)->delete(DB_TABLE);
$where - массив с условиями удаления
Более детальная информация о всех существующих методах Active Record текущей версии движка доступна по ссылке.