Модель: различия между версиями
V0yager (обсуждение | вклад) Нет описания правки |
V0yager (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
Модель это класс для работы с БД | Модель это класс для работы с БД | ||
файлы классов моделей располагаются в папке models определённого плагина. Имя файла модели должно всегда оканчиваться на Model. т.е. в случае user модели имя файла должно выглядеть как usersModel.php | |||
* Все модели должны наследоваться от родительского класса DbModel | |||
Пример - если нам надо выбрать всех пользователей то наша модель должна выглядеть следующим образом | |||
<?php | |||
class usersModel extends DbModel { | |||
function getUsers() { | |||
return $this->s_fetchAll("select * from users"); | |||
} | |||
} | |||
?> | |||
==Методы для работы с данными== | |||
===Выборка данных=== | |||
Внутри модели есть несколько основных методов для работы с БД | Внутри модели есть несколько основных методов для работы с БД | ||
Строка 18: | Строка 32: | ||
s_fetchOne($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" | |||
Версия от 10:45, 13 февраля 2013
Модель это класс для работы с БД
файлы классов моделей располагаются в папке 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(); }