Модель
Модель это класс для работы с БД
файлы классов моделей располагаются в папке models определённого плагина. Имя файла модели должно всегда оканчиваться на Model. т.е. в случае user модели имя файла должно выглядеть как usersModel.php
- Все модели должны наследоваться от родительского класса DbModel
Пример - если нам надо выбрать всех пользователей то наша модель должна выглядеть следующим образом
<?php class usersModel extends DbModel { function getUsers() { return $this->s_fetchAll("select * from users"); } } ?>
Методы для работы с данными
Выборка данных
Внутри модели есть несколько основных методов для работы с БД
s_fetchAll($sql) - выбирает набор строк, возвращает результат запроса как многомерный массив где на первом уровне содержаться строки, на втором, столбцы
s_fetchRow($sql) - выбирает одну строку, возвращает результат запроса как одномерный массив, где ключами являются имена столбцов, а значения, их значения соответственно
s_fetchCol($sql) - выбирает столбец, возвращает одномерный массив, содержащий результат выборки (каждый элемент - одна ячейка)
s_fetchOne($sql) - выбирает единственное значение
Вставка, обновление, удаление данных
Для вставки удаления и добавления есть метод pq, который принимает несколько аргументов варьирующихся от типа запроса
pq($type,$table,$data=false,$expression=false,&$error="",&$id=0) $type - типа запроса (insert, update, delete) $table - таблица в которую вставляются данные $data - массив с данными, которые мы вставляем или обновляем (ниже пример) (В случае типа запроса delete этот аргкмент превращается в $expression - Условия по которому идёт удаление) $expression - условия для обновления данных при $type=update $error - текст ошибки в случае если запрос не удался $id - при $type=insert здесь будет ID вставленной записи
ПРИМЕРЫ
Вставка
$db_data = array( 'login' => 'info@glenn.ru', 'password' => sha1('123') ); $this->pq('insert','users', $db_data); аналогично "inesrt into users(login,password) values('info@glenn.ru', sha1('123'))"
Обновление
$db_data = array( 'login' => 'changed', ); $this->pq('update','users', $db_data, 'id=32'); аналогично "update users set login='changed' where id=32"
Удаление
$this->pq('delete','users','id=32'); Аналогично "delete from users where id=32"
Инициализация модели в контроллере
Для того чтобы инициализировать модель в контроллере достаточно создать метов initModel и в нём выполнить $this->model = new siteModel();
function initModel() { $this->model = new siteModel(); }