Модель: различия между версиями

Материал из GLENN CMS WIKI
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
Модель это класс для работы с БД
Модель это класс для работы с БД


файлы классов моделей располагаются в папке models определённого плагина. Имя файла модели должно всегда оканчиваться на Model. т.е. в случае user модели имя файла должно выглядеть как usersModel.php
* Все модели должны наследоваться от родительского класса DbModel
Пример - если нам надо выбрать всех пользователей то наша модель должна выглядеть следующим образом
<?php
class usersModel extends DbModel {
    function  getUsers() {
        return $this->s_fetchAll("select * from users");
    }
}
?>


файлы классов моделей располагаются в папке models определённого плагина. Имя файла модели должно всегда оканчиваться на Model. т.е. в случае user модели имя файла должно выглядеть как usersModel.php


==Методы для работы с данными==


* Все модели должны наследоваться от родительского класса DbModel


===Выборка данных===


Внутри модели есть несколько основных методов для работы с БД
Внутри модели есть несколько основных методов для работы с БД
Строка 18: Строка 32:
s_fetchOne($sql) - выбирает единственное значение  
s_fetchOne($sql) - выбирает единственное значение  


а также метод pq для вставки, обновления, удаления данных
===Вставка, обновление, удаление данных===


Для вставки удаления и добавления есть метод 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"




<?php
====Удаление====
class usersModel extends DbModel {
    function  getUsers() {
        return $this->s_fetchAll("select * from users");
    }
}
?>


$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();
}