class Model (Модели)
Модели в системе могут быть описаны только для существующих объектов ORM и имеют такое же имя.
Модели могут быть двух видов:
- виртуальная модель — для каждого объекта ORM есть виртуальная модель, содержащая стандартный набор методов (модель не существует в виде файла);
- расширенная — модель, объявленная в виде класса, расширяющего функционал стандартной модели; в отличие от виртуальной может быть инстанцирована при помощи метода getInstance (класс должен быть отнаследован от класса Model).
Будьте предельно внимательны и осторожны при описании собственных моделей, система моделей использует позднее статическое связывание.
Создается модель конструкцией:
Model::factory($objectName);
Для расширенных моделей (реальных) так же возможна конструкция вида:
Model_Page::getInstance();
Основные методы:
class Model { /** * Хранилище объектов Db_object * @var Db_Object_Store */ protected $_store; /** * Адаптер подключения к базе данных * @var Zend_Db_Adapter_Abstract */ protected $_db; /** * Контейнер конфигурации обекта (Db_Object) * @var Db_Object_Config */ protected $_objectConfig; /** * Имя объекта и модели (Db_Object) * @var string */ protected $_name; /** * Продолжительность (время в секундах) жесткого кэширования (без инвалидации) * @var integer */ protected $_cacheTime; /** * Адаптер кэширования или false * @var Current Cache_Interface */ protected $_cache; /** * Менеджер подключений к БД (с 0.9.1) * @var Db_Manager_Interfacee */ protected $_dbManager; /** * Установить префикс таблицы базы данных * @param string prefix */ static public function setDbPrefix($prefix) /** * Получить префикс таблицы базы данных * @return string */ static public function getDbPrefix() /** * Установить кэширующий интерфейс * @param Cache_Interface $cache or false */ static public function setDataCache($cache) /** * Установить глобальный коннектор к базе данных (для всех моделей) * @param Zend_Db_Adapter_Abstract $db */ static public function setGlobalDbConnection(Zend_Db_Adapter_Abstract $db) /** * Установить время жизни кэша при использовании жесткого кэширования (для всех моделей) * @property integer $time */ static public function setGlobalHardcacheTime($time) /** * Заменить коннектор базы данных для модели * @param Zend_Db_Adapter_Abstract $db */ public function setDbConnection(Zend_Db_Adapter_Abstract $db) /** * Установить время жизни жесткого кэша модели * @param integer $time */ public function setHardCacheTitme($time) /** * Получить коннектор базы данных для текущей модели * @return Zend_Db_Adapter_Abstract */ public function getDbConnection() /** * Получить имя объекта, к которому относится модель * @return string */ public function getObjectName() /** * Получить ключ для кэша * @param array $params — параметры не могут содержать массивы, объекты и ресурсы * @return string */ public function getCacheKey(array $params) /** * Получить имя таблицы базы данных (с префиксом) * @return string */ public function table() /** * Получить запись по идентификатору * @param integer $id * @param array $fields — optional — список полей для выборки * @return array / false */ public function getItem($id , $fields = '*') /** * Получить несколько записей по списку идентификаторов * @param array $ids — список идентификаторов * @param array $fields — optional - список полей для выборки * @return array / false */ final public function getItems(array $ids , $fields = '*') /** * Получить данные объекта используя кэширование * @param integer $id - object identifier * @return array */ public function getCachedItem($id) /** * Получить данные объекта используя кэширование , поиск по уникальному полю * @param string field - field name * @param string value - field value * @return array */ public function getCachedItemByField($field , $value) /** * Получить данные объекта, поиск по уникальному полю * @param string $fieldName * @param string $value * @param array $fields - optional * @return array */ public function getItemByUniqueField($fieldName , $value , $fields = '*') /** * Добавить фильтры (where) к запросу * @param Zend_Db_Select $sql * @param array $filters ключ — имя поля, значение * @return void */ public function queryAddFilters(Zend_Db_Select $sql , $filters) /** * Добавить параметры пагинации к запросу * Используется в CRUD-контроллерах для пагинации и сортировки списков * @param Zend_Db_Select $sql * @param array $params — возможные ключи: start,limit,sort,dir * @return void */ static public function queryAddPagerParams(Zend_Db_Select $sql , $params) /** * Перевести массив в список целочисленных значений для вставки в условия SQL-запроса, * используется для увеличения производительности подготовки запросов на основе Zend_Select * @param array $ids * @return string */ static public function listIntegers(array $ids) /** * Получить количество объектов (строк в таблице) * @param array $filters — optional - фильтры (where) ключ — имя поля, значение * @param string $query - optional - search query — поисковый запрос * @param boolean $useCache — использовать жесткое кэширование * необходимо помнить, что жесткий кэш инвалидируется только по истечению времени жизни (configs/main.php), * используется в случае неприменимости триггеров изменений * @return integer */ public function getCount($filters = false , $query = false , $useCache = false) /** * Получить список записей * @param array $params — optional параметры array('start'=>0,'limit'=>10,'sort'=>'fieldname','dir'=>'DESC') * @param array $filters - optional фильтры (where) ключ — имя поля, значение * @param array $fields - optional список полей для выборки * @param boolean $useCache - использовать жесткое кэширование * необходимо помнить, что жесткий кэш инвалидируется только по истечению времени жизни (configs/main.php), * используется в случае неприменимости триггеров изменений */ public function getList($params = false, $filters = false , $fields = '*' , $useCache = false ) /** * Получить список записей (используется контроллерами CRUD_VC) * @param array $params - параметры array('start'=>0,'limit'=>10,'sort'=>'fieldname','dir'=>'DESC') * @param array $filters - фильтры * @param string $query — optional строка для поиска * @param mixed $fields — optional список полей * @param string $author - optional ключ для хранения ID автора записи * @param strong $lastEditor - optional ключ для хранения ID последнего редактора * @param array $joins - optional, конфиг включений для Zend_Select: * array( * array( * 'joinType'=> joinLeft/left , joinRight/right , joinInner/inner * 'table' => array / string * 'fields => array / string * 'condition'=> string * )... * ) */ public function getListVc($params = false , $filters = false , $query = false , $fields = '*' , $author = false , $lastEditor = false , $joins = false) /** * Удалить запись * @param integer $recordId идентификатор записи * @param boolean $log — логировать изменения */ public function remove($recordId , $log = true) /** * Проверить уникальность значения поля * @param integer $recordId — идентификатор записи * @param string $fieldName — имя поля * @param mixed $fieldValue — значение поля * @return boolean */ public function checkUnique($recordId , $fieldName , $fieldValue) /** * Фабричный метод инстанцирования модели * @param string $objectName — имя объекта в ORM * @return Model */ static public function factory($objectName)
/** * Установить адаптер хранилища объектов по умолчанию * @param Db_Object_Store $store * @deprecated устарело с 0.9.1 */ static public functionsetGlobalObjectStore(Db_Object_Store $store) /** * Установить адаптер хранилища объектов для объекта модели * @param Db_Object_Store $store */ public function setObjectsStore(Db_Object_Store $store) /** * Получить адаптер хранилища объектов * @return Db_Object_Store */ public function getStore() /** * Получить имя первичного ключа * @return string */ public function getPrimaryKey() /** * Установить менеджер соединений с БД по умолчанию (с версии 0.9.1) * @param Db_Manager_Interface $manager */ static public function setDefaultDbManager(Db_Manager_Interface $manager) /** * Установить менеджер соединений с БД для текущей модели (с версии 0.9.1) * @param Db_Manager_Interface $manager */ public function setDbManager(Db_Manager_Interface $manager) /** * Установить адаптер логгирования по умолчанию * @param Log $log */ static public function setDefaultLog(Log $log) /** * Установить адаптер логирования для текущей модели * @param mixed Log | false $log */ public function setLog($log) /** * Отправить сообщение об ошибке в лог (с версии 0.9.2.5) * @param string $message */ public function logError($message) }
ПРИМЕР:
$data = Model::factory('News')->getList(
array(
'sort'=>'news_date',
'dir'=>'DESC',
'start'=>0,
'limit'=>10
),
array('published'=>true),
array('id','title','news_date'),
true
);
comments powered by Disqus