Модель

Материал из GLENN CMS WIKI
Перейти к навигации Перейти к поиску

Модель это класс для работы с БД

файлы классов моделей располагаются в папке 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();
}