Класс Model
Объектно-реляционный маппер.
Модель данных объектов на основе DBO. Автоматически выбирает имя таблицы базы данных на основе множественного числа и нижнего регистра имени класса объекта (например, класс 'User' => таблица 'users'; класс 'Man' => таблица 'men'). Таблица должна иметь по крайней мере первичный ключ 'id auto_increment'.
- Объект
-
Model реализует CakeEventListener
Непосредственные известные подклассы
AclNode, AppModel, CakeTestModelКосвенные известные подклассы
Aco, AcoAction, Aro, I18nModel, PermissionАвторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT License
Ссылка: http://book.cakephp.org/2.0/ru/models.html
Расположение: Cake/Model/Model.php
Подробное описание метода
__callsource public
__call( string $method , array $params )
Обрабатывает вызовы пользовательских методов, таких как findBy<field> для моделей DB и пользовательские вызовы RPC для удаленных источников данных.
Параметры
- string
$method - Имя метода для вызова.
- array
$params - Параметры для метода.
Возвращает
mixedТо, что возвращает вызываемый метод
__constructsource public
__construct( boolean|integer|string|array $id false , string $table null , string $ds null )
Конструктор. Связывает таблицу базы данных модели с объектом.
Если $id является массивом, его можно использовать для передачи нескольких параметров в модель.
-
id: ID для начала модели. -
table: Таблица для использования в этой модели. -
ds: Имя подключения, к которому подключена эта модель. -
name: Имя модели, например, Post. -
alias: Псевдоним модели, который используется для регистрации экземпляра вClassRegistry. Например,ParentThread
Переопределение метода Model::__construct
При переопределении Model::__construct() обратите внимание на необходимость включения и передачи всех 3 аргументов в parent::__construct($id, $table, $ds);
Динамическое создание моделей
Вы можете динамически создавать экземпляры моделей, используя синтаксис массива $id.
$Post = new Model(array('table' => 'posts', 'name' => 'Post', 'ds' => 'connection2'));
Создаст модель, связанную с таблицей posts в подключении connection2. Динамическое создание моделей полезно, когда вам нужен объект модели, не содержащий ассоциаций или присоединенных поведений.
Параметры
- boolean|integer|string|array
$idнеобязательно false - Установите этот ID для этой модели при запуске, также может быть массивом параметров, см. выше.
- string
$tableнеобязательно null - Имя таблицы базы данных для использования.
- string
$dsнеобязательно null - Имя подключения к источнику данных.
Переопределяет
Object::__construct() __getsource public
__get( string $name )
Возвращает значение запрошенной переменной, если она может быть установлена методом __isset()
Параметры
- string
$name - Запрошенная переменная для получения ее значения или ссылки
Возвращает
mixedзначение запрошенной переменной, если она установлена
__issetsource public
__isset( string $name )
Обрабатывает леничную загрузку ассоциаций модели, просматривая массивы ассоциаций в поисках запрошенной переменной.
Параметры
- string
$name - Переменная, проверяемая на существование в классе
Возвращает
booleantrue, если переменная существует (если это не загруженная ассоциация модели, она будет создана), иначе false
_addToWhiteListsource protected
_addToWhiteList( string $key , array $options )
Вспомогательный метод для saveAll() и аналогичных методов, добавляющий внешний ключ в список полей.
Параметры
- string
$key - Имя поля для добавления в список
- array
$options - Список параметров
Возвращает
arrayпараметры
_clearCachesource protected
_clearCache( string $type null )
Очищает кэш для этой модели.
Параметры
- string
$typeнеобязательно null - Если null, удаляет кэшированные представления, если Cache.check равен true. Будет использоваться для удаления кэша запросов.
Возвращает
mixedTrue при удалении, null в противном случае
_collectForeignKeyssource protected
_collectForeignKeys( string $type 'belongsTo' )
Сбор внешних ключей из ассоциаций.
Параметры
- string
$typeнеобязательно 'belongsTo' - Тип ассоциации.
Возвращает
arrayмассив
_constructLinkedModelsource protected
_constructLinkedModel( string $assoc , string $className null , string $plugin null )
Защищенный вспомогательный метод для создания связанных моделей заданного класса.
Параметры
- string
$assoc - Имя ассоциации
- string
$classNameнеобязательно null - Имя класса
- string
$pluginнеобязательно null - Имя плагина, в котором находится $className. Примеры: public $hasMany = array('Assoc' => array('className' => 'ModelName')); использование: $this->Assoc->modelMethods(); public $hasMany = array('ModelName'); использование: $this->ModelName->modelMethods();
_deleteDependentsource protected
_deleteDependent( string $id , boolean $cascade )
Каскадное удаление записей модели через связанные записи hasMany и hasOne.
Параметры
- string
$id - ID записи, которая была удалена
- boolean
$cascade - Установите в значение true, чтобы удалить записи, зависящие от этой записи
_deleteLinkssource protected
_deleteLinks( string $id )
Каскадное удаление записей модели через ключи объединения HABTM.
Параметры
- string
$id - ID записи, которая была удалена
_doSavesource protected
_doSave( array $data null , array $options array() )
Сохраняет данные модели (в соответствии со списком разрешенных полей, если он указан) в базе данных. По умолчанию валидация выполняется перед сохранением.
Параметры
- array
$dataнеобязательно null - Данные для сохранения.
- array
$optionsнеобязательно array() - Может содержать следующие ключи: - validate: Устанавливается в значение true/false для включения или отключения валидации. - fieldList: Массив полей, которые вы хотите разрешить для сохранения. - callbacks: Устанавливается в значение false для отключения обратных вызовов. Использование 'before' или 'after' включит только эти обратные вызовы. -
counterCache: Булево значение для управления обновлением кэшей счётчиков (если они есть)
Возвращает
mixedПри успехе Model::$data, если оно не пусто, или true; false при неудаче
Выбрасывает
PDOExceptionPDOException
Ссылка
http://book.cakephp.org/2.0/ru/models/saving-your-data.html_filterResultssource protected
_filterResults( array $results , boolean $primary true )
Пропускает результаты запроса через методы model и behavior послеFind().
Параметры
- массив
$results - Результаты для фильтрации
- булево
$primaryнеобязательно true - Если это результаты основного модели (результаты из модели, где была выполнена операция поиска)
Возвращает
arrayНабор отфильтрованных результатов
Триггеры
Model.afterFind $this, массив($results, $primary)_findAllsource protected
_findAll( string $state , array $query , array $results array() )
Обрабатывает логику фильтрации до/после для операций find('all'). Вызывается только Model::find().
Параметры
- строка
$state - Либо "before", либо "after"
- массив
$query - Запрос.
- массив
$resultsнеобязательно array() - Результаты.
Возвращает
arrayмассив
См. также
Model::find()_findCountsource protected
_findCount( string $state , array $query , array $results array() )
Обрабатывает логику фильтрации до/после для операций find('count'). Вызывается только Model::find().
Параметры
- строка
$state - Либо "before", либо "after"
- массив
$query - Запрос.
- массив
$resultsнеобязательно array() - Результаты.
Возвращает
integerКоличество найденных записей или false
См. также
Model::find()_findFirstsource protected
_findFirst( string $state , array $query , array $results array() )
Обрабатывает логику фильтрации до/после для операций find('first'). Вызывается только Model::find().
Параметры
- строка
$state - Либо "before", либо "after"
- массив
$query - Запрос.
- массив
$resultsнеобязательно array() - Результаты.
Возвращает
arrayмассив
См. также
Model::find()_findListsource protected
_findList( string $state , array $query , array $results array() )
Обрабатывает логику фильтрации до/после для операций find('list'). Вызывается только Model::find().
Параметры
- строка
$state - Либо "before", либо "after"
- массив
$query - Запрос.
- массив
$resultsнеобязательно array() - Результаты.
Возвращает
arrayКлючи/значения первичных ключей/полей отображения всех найденных записей
См. также
Model::find()_findNeighborssource protected
_findNeighbors( string $state , array $query , array $results array() )
Определяет значение предыдущего поля, затем использует логику для поиска записей «обертывания» и возвращает их.
Параметры
- строка
$state - Либо "before", либо "after"
- массив
$query - Запрос.
- массив
$resultsнеобязательно array() - Результаты.
Возвращает
arrayмассив
_findThreadedsource protected
_findThreaded( string $state , array $query , array $results array() )
В случае возврата неоднозначных результатов (несколько результатов верхнего уровня с разными parent_id) результаты верхнего уровня с разными parent_id, отличными от первого результата, будут удалены
Параметры
- строка
$state - Либо "before", либо "after".
- массив
$query - Запрос.
- массив
$resultsнеобязательно array() - Результаты.
Возвращает
arrayРезультаты с учетом ветвления
_generateAssociationsource protected
_generateAssociation( string $type , string $assocKey )
Создаёт массивную ассоциацию из строки.
Параметры
- строка
$type - 'belongsTo', 'hasOne', 'hasMany', 'hasAndBelongsToMany'
- строка
$assocKey - Ключ ассоциации.
_isUUIDFieldsource protected
_isUUIDField( string $field )
Проверяет, является ли переданное поле полем UUID.
Параметры
- строка
$field - поле для проверки
Возвращает
booleanbool
_normalizeXmlDatasource protected
_normalizeXmlData( array $xml )
Нормализует Xml::toArray() для использования в Model::save()
Параметры
- массив
$xml - XML в виде массива
Возвращает
arrayмассив
_prepareUpdateFieldssource protected
_prepareUpdateFields( array $data )
Вспомогательный метод для Model::updateCounterCache(). Проверяет поля, которые будут обновлены, на
Параметры
- массив
$data - Поля записи, которые будут обновлены
Возвращает
arrayВозвращает обновлённые значения внешних ключей вместе со старыми значениями в ключе 'old', или пустой массив, если внешние ключи не обновляются.
_readDataSourcesource protected
_readDataSource( string $type , array $query )
Чтение из источника данных
Model::_readDataSource() используется всеми вызовами find() для чтения из источника данных и может быть переопределён для кэширования вызовов источника данных.
protected function _readDataSource($type, $query) { $cacheName = md5(json_encode($query)); $cache = Cache::read($cacheName, 'cache-config-name'); if ($cache !== false) { return $cache; } $results = parent::_readDataSource($type, $query); Cache::write($cacheName, $results, 'cache-config-name'); return $results; }
Параметры
- строка
$type - Тип операции поиска (все / первый / количество / соседи / список / ветвление)
- массив
$query - Поля параметров (условия / поля / соединения / лимит / смещение / порядок / страница / группа / обратные вызовы)
Возвращает
arrayмассив
_saveMultisource protected
_saveMulti( array $joined , integer|string $id , DataSource $db )
Сохраняет данные модели hasAndBelongsToMany в базе данных.
Параметры
- массив
$joined - Данные для сохранения
- целое число|строка
$id - ID записи в этой модели
-
DataSource$db - Экземпляр источника данных.
_setAliasDatasource protected
_setAliasData( array $data )
Перемещает значения в псевдоним
Параметры
- массив
$data - Данные.
Возвращает
arrayмассив
afterDeletesource public
afterDelete( )
Вызывается после каждой операции удаления.
Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#afterdeleteafterFindsource public
afterFind( mixed $results , boolean $primary false )
Вызывается после каждой операции поиска. Может использоваться для изменения любых возвращаемых результатов find(). Значение возврата должно быть (изменёнными) результатами.
Параметры
- смешанный
$results - Результаты операции поиска
- булево
$primaryнеобязательно false - Является ли эта модель запрашиваемой напрямую (по сравнению с её запросом как ассоциации)
Возвращает
mixedРезультат операции поиска
Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#afterfindafterSavesource public
afterSave( boolean $created , array $options array() )
Вызывается после каждой успешной операции сохранения.
Параметры
- boolean
$created - Истина, если это сохранение создало новую запись
- array
$optionsoptional array() - Параметры, переданные из Model::save().
См. также
Model::save()Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#aftersavebeforeDeletesource public
beforeDelete( boolean $cascade true )
Вызывается перед каждой операцией удаления.
Параметры
- boolean
$cascadeoptional true - Если true, записи, зависящие от этой записи, также будут удалены
Возвращает
booleanTrue, если операция должна быть продолжена, false — если она должна быть прервана
Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#beforedeletebeforeFindsource public
beforeFind( array $query )
Вызывается перед каждой операцией поиска. Возвращает false, если вы хотите прервать вызов find, в противном случае возвращает (изменённые) данные запроса.
Параметры
- array
$query - Данные, используемые для выполнения этого запроса, т. е. условия, порядок и т. д.
Возвращает
mixedtrue, если операция должна быть продолжена, false — если она должна быть прервана; или изменённый $query для продолжения с новым $query
Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#beforefindbeforeSavesource public
beforeSave( array $options array() )
Вызывается перед каждой операцией сохранения, после проверки данных. Возвращение значения, отличного от true, прерывает сохранение.
Параметры
- array
$optionsoptional array() - Параметры, переданные из Model::save().
Возвращает
booleanTrue, если операция должна быть продолжена, false — если она должна быть прервана
См. также
Model::save()Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#beforesavebeforeValidatesource public
beforeValidate( array $options array() )
Вызывается во время операций проверки, до проверки. Обратите внимание, что пользовательские правила проверки можно определить в $validate.
Параметры
- array
$optionsoptional array() - Параметры, переданные из Model::save().
Возвращает
booleanTrue, если операция проверки должна быть продолжена, false — для прерывания
См. также
Model::save()Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#beforevalidatebindModelsource public
bindModel( array $params , boolean $reset true )
Связывает модели ассоциации на лету.
Если $reset равно false, ассоциация не будет сброшена к исходным значениям, определённым в модели
Пример: Добавить новую связь hasOne к модели Profile, не определённую в исходном коде модели:
$this->User->bindModel(array('hasOne' => array('Profile')));
Связи, которые не сделаны постоянными, будут сброшены при следующем вызове Model::find() для этой модели.
Параметры
- array
$params - Набор связей (индексируется по типу связи)
- boolean
$resetoptional true - Установите значение в false, чтобы сделать связь постоянной
Возвращает
booleanУспех
Ссылка
http://book.cakephp.org/2.0/ru/models/associations-linking-models-together.html#creating-and-destroying-associations-on-the-flybuildQuerysource public
buildQuery( string $type 'first' , array $query array() )
Создаёт массив запроса, используемый источником данных для генерации запроса для извлечения данных.
Параметры
- string
$typeoptional 'first' - Тип операции поиска (all / first / count / neighbors / list / threaded)
- array
$queryoptional array() - Поля параметров (conditions / fields / joins / limit / offset / order / page / group / callbacks)
Возвращает
array|nullМассив запроса или null, если его не удалось создать по каким-либо причинам
См. также
Model::find()Триггеры
Model.beforeFind $this, array($query)clearsource public
clear( )
Эта функция — удобная обертка для создания (false) и, как следует из названия, очищает id, данные и ошибки валидации.
Возвращает
booleanВсегда true при успехе
См. также
Model::create()createsource public
create( boolean|array $data array() , boolean $filterKey false )
Инициализирует модель для записи новой записи, загружает значения по умолчанию для тех полей, которые не определены в $data, и очищает предыдущие ошибки валидации. Особенно полезно для сохранения данных в циклах.
Параметры
- boolean|array
$dataoptional array() - Необязательный массив данных для присвоения модели после ее создания. Если null или false, значения по умолчанию схемы не объединяются.
- boolean
$filterKeyoptional false - Если true, перезаписывает любой ввод первичного ключа пустым значением
Возвращает
arrayТекущие данные Model::data после объединения $data и/или значений по умолчанию из базы данных
Ссылка
http://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-create-array-data-arraydeconstructsource public
deconstruct( string $field , array|object $data )
Деконструирует сложный тип данных (массив или объект) в значение одного поля.
Параметры
- string
$field - Имя поля, которое нужно деконструировать
- array|object
$data - Массив или объект, которые нужно деконструировать в поле
Возвращает
mixedПолученные данные, которые должны быть присвоены полю
deletesource public
delete( integer|string $id null , boolean $cascade true )
Удаляет запись для заданного идентификатора. Если идентификатор не задан, используется текущий идентификатор. Возвращает true при успехе.
Параметры
- integer|string
$idoptional null - Идентификатор удаляемой записи
- boolean
$cascadeoptional true - Установите в true, чтобы удалить записи, зависящие от этой записи
Возвращает
booleanTrue при успехе
Ссылка
http://book.cakephp.org/2.0/ru/models/deleting-data.htmlТриггеры
Model.beforeDelete $this, array($cascade)Model.afterDelete $this
deleteAllsource public
deleteAll( mixed $conditions , boolean $cascade true , boolean $callbacks false )
Удаляет несколько записей модели на основе набора условий.
Параметры
- mixed
$conditions - Условия для сопоставления
- boolean
$cascadeнеобязательный true - Установите в значение true, чтобы удалить записи, зависящие от этой записи
- boolean
$callbacksнеобязательный false - Выполнить обратные вызовы
Возвращает
booleanTrue при успехе, false при ошибке
Ссылка
http://book.cakephp.org/2.0/ru/models/deleting-data.html#deleteallescapeFieldsource public
escapeField( string $field null , string $alias null )
Экранирует имя поля и добавляет имя модели. Экранирование выполняется в соответствии с правилами текущего драйвера базы данных.
Параметры
- string
$fieldнеобязательный null - Поле для экранирования (например: id)
- string
$aliasнеобязательный null - Псевдоним модели (например: Post)
Возвращает
stringИмя экранированного поля для этой модели (например, id преобразуется в
Post.id).existssource public
exists( integer|string $id null )
Возвращает true, если запись с определенным ID существует.
Если $id не передан, вызывается Model::getID(), чтобы получить текущий идентификатор записи, а затем выполняется Model::find('count') на текущем источнике данных, чтобы определить существование записи в постоянном хранилище.
Параметры
- integer|string
$idнеобязательный null - ID записи, существование которой нужно проверить
Возвращает
booleanTrue, если такая запись существует
fieldsource public
field( string $name , array $conditions null , string $order null )
Возвращает содержимое одного поля, заданного предоставленными условиями, первой записи в предоставленном порядке.
Параметры
- string
$name - Имя поля, которое нужно получить.
- array
$conditionsнеобязательный null - SQL-условия (по умолчанию NULL).
- string
$orderнеобязательный null - SQL-фрагмент ORDER BY.
Возвращает
string|falseСодержимое поля или false, если не найдено.
Ссылка
http://book.cakephp.org/2.0/ru/models/retrieving-your-data.html#model-fieldfindsource public
find( string $type 'first' , array $query array() )
Запрашивает у источника данных и возвращает массив набора результатов.
Используется для выполнения операций поиска, где первый аргумент - тип операции поиска (all / first / count / neighbors / list / threaded), второй параметр - параметры для поиска (индексированный массив, включая: 'conditions', 'limit', 'recursive', 'page', 'fields', 'offset', 'order', 'callbacks')
Например:
$model->find('all', array( 'conditions' => array('name' => 'Thomas Anderson'), 'fields' => array('name', 'email'), 'order' => 'field3 DESC', 'recursive' => 2, 'group' => 'type', 'callbacks' => false, ));
В дополнение к стандартным ключам запроса выше, вы можете указать источник данных и специфичные для поведения ключи. Например, при использовании источника данных на основе SQL вы можете использовать ключ joins, чтобы указать дополнительные объединения, которые должны быть частью запроса.
$model->find('all', array( 'conditions' => array('name' => 'Thomas Anderson'), 'joins' => array( array( 'alias' => 'Thought', 'table' => 'thoughts', 'type' => 'LEFT', 'conditions' => '`Thought`.`person_id` = `Person`.`id`' ) ) ));
Отключение обратных вызовов
Ключ callbacks позволяет вам отключить или указать обратные вызовы, которые должны быть выполнены. Чтобы отключить обратные вызовы beforeFind и afterFind, установите 'callbacks' => false в ваших параметрах. Вы также можете установить значение callbacks в 'before' или 'after', чтобы включить только указанный обратный вызов.
Добавление новых типов поиска
Поведения и типы поиска также могут определять пользовательские ключи поиска, которые передаются в find(). См. документацию по настраиваемым типам поиска (http://book.cakephp.org/2.0/ru/models/retrieving-your-data.html#creating-custom-find-types) для получения информации о реализации настраиваемых типов поиска.
Указание 'fields' для обозначения 'list':
- Если поля не указаны, то 'id' используется в качестве ключа, а 'model->displayField' - в качестве значения.
- Если указано одно поле, 'id' используется в качестве ключа, а указанное поле - в качестве значения.
- Если указаны три поля, они используются (в порядке) для ключа, значения и группы.
- В противном случае, первые два поля используются для ключа и значения.
Примечание: find(list) + представления баз данных имеют проблемы с MySQL 5.0. Попробуйте обновить MySQL до 5.1, если у вас возникли проблемы с представлениями базы данных.
Примечание: find(count) имеет свои собственные значения возврата.
Параметры
- string
$typeнеобязательный 'first' - Тип операции поиска (all / first / count / neighbors / list / threaded)
- array
$queryнеобязательный array() - Поля параметров (conditions / fields / joins / limit / offset / order / page / group / callbacks)
Возвращает
array|nullМассив записей или Null при ошибке.
Ссылка
http://book.cakephp.org/2.0/ru/models/retrieving-your-data.htmlgetAffectedRowssource public
getAffectedRows( )
Возвращает количество строк, затронутых последним запросом.
Возвращает
integerКоличество строк
getAssociatedsource public
getAssociated( string $type null )
Получает все модели, с которыми связана эта модель.
Параметры
- string
$typeнеобязательный null - Только ассоциации результатов этого типа
Возвращает
array|nullАссоциации
getColumnTypesource public
getColumnType( string $column )
Возвращает тип столбца столбца в модели.
Параметры
- string
$column - Имя столбца модели
Возвращает
stringТип столбца
getColumnTypessource public
getColumnTypes( )
Возвращает ассоциативный массив имен полей и типов столбцов.
Возвращает
arrayТипы полей, индексированные по имени поля
getDataSourcesource public
getDataSource( )
Получает DataSource, к которому привязана эта модель.
Возвращает
DataSourceОбъект DataSource
getEventManagersource public
getEventManager( )
Возвращает экземпляр менеджера CakeEventManager, который обрабатывает все обратные вызовы. Вы можете использовать этот экземпляр для регистрации новых слушателей или обратных вызовов к событиям модели или создания собственных событий и их вызова по своему желанию.
Возвращает
CakeEventManagerCakeEventManager
getIDsource public
getID( integer $list 0 )
Возвращает текущий ID записи.
Параметры
- integer
$listнеобязательный 0 - Индекс, в котором находится составной ID
Возвращает
mixedID текущей записи, false, если ID отсутствует
getInsertIDsource public
getInsertID( )
Возвращает ID последней вставленной записи этой моделью.
Возвращает
mixedID последней вставленной записи
getLastInsertIDsource public
getLastInsertID( )
Возвращает ID последней вставленной записи этой моделью.
Возвращает
mixedID последней вставленной записи
getNumRowssource public
getNumRows( )
Возвращает количество строк, возвращенных последним запросом.
Возвращает
integerКоличество строк
getVirtualFieldsource public
getVirtualField( string $field null )
Возвращает выражение для виртуального поля модели.
Параметры
- строка
$fieldнеобязательно null - Имя поля для поиска
Возвращает
mixedЕсли $field — строковое выражение, связанное с виртуальным полем $field. Если $field равен null, возвращает массив всех виртуальных полей модели или false, если такие поля отсутствуют.
hasAnysource public
hasAny( array $conditions null )
Возвращает true, если существует запись, удовлетворяющая заданным условиям.
Параметры
- массив
$conditionsнеобязательно null - Массив SQL-условий
Возвращает
booleanTrue, если такая запись существует
hasFieldsource public
hasField( string|array $name , boolean $checkVirtual false )
Возвращает true, если указанное поле существует в таблице базы данных модели.
Параметры
- строка|массив
$name - Имя поля для поиска или массив имён
- булево
$checkVirtualнеобязательно false - проверяет, объявлено ли поле как виртуальное
Возвращает
mixedЕсли $name — строка, возвращает boolean, указывающий, существует ли поле. Если $name — массив имён полей, возвращает первое существующее поле или false, если таких полей нет.
hasMethodsource public
hasMethod( string $method )
Проверяет, доступен ли метод для модели. Будет проверено как собственные методы модели, так и унаследованные методы, а также методы, доступные через поведения.
Параметры
- строка
$method - Метод, который нужно вызвать.
Возвращает
booleanTrue, если метод доступен.
implementedEventssource public
implementedEvents( )
Возвращает список всех событий, которые будут срабатывать в модели в течение её жизненного цикла. Вы можете переопределить эту функцию, чтобы добавить свои обработчики событий.
Возвращает
arrayмассив
Реализация
CakeEventListener::implementedEvents() invalidFieldssource public
invalidFields( array|string $options array() )
Возвращает массив полей, которые не прошли валидацию в текущей модели.
Дополнительно заполняет свойство validationErrors модели тем же массивом.
Параметры
- массив|строка
$optionsнеобязательно array() - Необязательный массив дополнительных параметров, которые будут доступны в обратном вызове beforeValidate.
Возвращает
arrayМассив невалидных полей и их сообщений об ошибках
См.
Model::validates()invalidatesource public
invalidate( string $field , mixed $value true )
Помечает поле как невалидное, при необходимости устанавливая имя правила валидации (в случае нескольких валидаций для поля), которое было нарушено.
Параметры
- строка
$field - Имя поля, которое нужно пометить как невалидное
- смешанный
$valueнеобязательно true - Имя правила валидации, которое не было выполнено, или сообщение об ошибке валидации, которое нужно вернуть. Если ключ валидации не предоставлен, по умолчанию устанавливается true.
isForeignKeysource public
isForeignKey( string $field )
Возвращает true, если данное имя поля является внешним ключом в этой модели.
Параметры
- строка
$field - Возвращает true, если входная строка оканчивается на "_id"
Возвращает
booleanTrue, если поле является внешним ключом, указанным в массиве belongsTo.
isUniquesource public
isUnique( array $fields , boolean|array $or true )
Возвращает false, если какие-либо переданные поля совпадают с любыми (по умолчанию, со всеми, если $or = false) их соответствующими значениями.
Может использоваться как метод валидации. Когда используется как метод валидации, параметр $or содержит массив полей, которые необходимо валидировать.
Параметры
- массив
$fields - Пары поле/значение для поиска (если значения не указаны, они берутся из $this->data)
- булево|массив
$orнеобязательно true - Если false, все указанные поля должны совпадать, чтобы вернуть false
Возвращает
booleanFalse, если найдено любое соответствие записей по любым полям
isVirtualFieldsource public
isVirtualField( string $field )
Возвращает true, если указанное поле является виртуальным полем модели.
Параметры
- строка
$field - Имя поля для поиска
Возвращает
booleanуказывающее, существует ли поле как виртуальное поле модели.
joinModelsource public
joinModel( string|array $assoc , array $keys array() )
Получает имя и поля, которые будут использоваться моделью для объединения. Это позволяет указывать поля объединения в определении ассоциации.
Параметры
- строка|массив
$assoc - Модель для объединения
- массив
$keysнеобязательно array() - Ключи объединения, которые необходимо объединить с запрошенными ключами
Возвращает
arrayмассив
onErrorsource public
onError( )
Вызывается при возникновении ошибки на уровне источника данных.
Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#onerrorquerysource public
query( string $sql )
Возвращает результат набора для данного SQL-запроса. Запросы на выполнение пользовательского SQL должны выполняться с помощью этого метода.
Метод может принимать 2-й и 3-й параметры.
- 2-й параметр: либо boolean для управления кэшированием запросов, либо массив параметров для использования с заготовками предложений.
- 3-й параметр: если 2-й аргумент предоставлен, булева метка для включения/выключения кэширования запросов.
Параметры
- строка
$sql - SQL-запрос
Возвращает
mixedМассив набора результатов или boolean, указывающий на успех/неудачу в зависимости от выполненного запроса
Ссылка
http://book.cakephp.org/2.0/ru/models/retrieving-your-data.html#model-queryreadsource public
read( string|array $fields null , integer|string $id null )
Возвращает список полей из базы данных и устанавливает текущие данные модели (Model::$data) с найденной записью.
Параметры
- строка|массив
$fieldsнеобязательно null - Строка имени одного поля или массив имён полей.
- целое число|строка
$idнеобязательно null - Идентификатор записи для чтения
Возвращает
arrayМассив полей базы данных или false, если не найдено
Ссылка
http://book.cakephp.org/2.0/ru/models/retrieving-your-data.html#model-readresetAssociationssource public
resetAssociations( )
Это сбрасывает массивы ассоциаций модели обратно к тем, которые изначально были определены в модели. Обычно вызывается в конце каждого вызова Model::find()
Возвращаемое значение
booleanУспех
savesource public
save( array $data null , boolean|array $validate true , array $fieldList array() )
Сохраняет данные модели (в зависимости от белого списка, если он предоставлен) в базе данных. По умолчанию валидация выполняется перед сохранением. Метод-прослойка для _doSave() с обработкой транзакций.
Параметры
- массив
$dataнеобязательно null - Данные для сохранения.
- boolean|массив
$validateнеобязательно true - Либо boolean, либо массив. Если boolean, указывает, нужно ли выполнять валидацию перед сохранением. Если массив, может содержать следующие ключи: - atomic: Если true (по умолчанию), попытается сохранить запись в одной транзакции. - validate: Устанавливается в true/false для включения или отключения валидации. - fieldList: Массив полей, которые вы хотите разрешить для сохранения. - callbacks: Устанавливается в false для отключения обратных вызовов. Использование 'before' или 'after' включит только эти обратные вызовы. -
counterCache: Boolean для управления обновлением счётчиков (если они есть) - массив
$fieldListнеобязательно array() - Список полей, которые разрешено сохранить
Возвращаемое значение
mixedПри успехе Model::$data, если он не пуст, или true; false при неудаче
Исключения
ExceptionИсключение
PDOExceptionPDOException
Ссылка
http://book.cakephp.org/2.0/ru/models/saving-your-data.htmlТриггеры
Model.beforeSave $this, массив($options)Model.afterSave $this, массив($created, $options)
saveAllsource public
saveAll( array $data array() , array $options array() )
Обратный метод совместимости для: saveMany(), validateMany(), saveAssociated() и validateAssociated()
Сохраняет несколько отдельных записей для одной модели; Также работает с одной записью, а также со всеми её связанными записями.
Параметры
-
validate: Установите в false для отключения валидации, в true для валидации каждой записи перед сохранением, в 'first' для валидации всех записей перед сохранением любой (по умолчанию), или в 'only' для валидации записей, но без их сохранения. -
atomic: Если true (по умолчанию), попытается сохранить все записи в одной транзакции. Следует установить в false, если база данных/таблица не поддерживает транзакции. -
fieldList: Эквивалент параметра $fieldList в Model::save(). Он должен быть ассоциативным массивом с именем модели в качестве ключа и массивом полей в качестве значения. Например:array( 'SomeModel' => array('field'), 'AssociatedModel' => array('field', 'otherfield') )
-
deep: Смотрите saveMany/saveAssociated -
callbacks: Смотрите Model::save() -
counterCache: Смотрите Model::save()
Параметры
- массив
$dataнеобязательно array() - Данные записей для сохранения. Это может быть либо массив с числовыми индексами (для сохранения нескольких записей одного типа), либо массив с индексами по имени ассоциации.
- массив
$optionsнеобязательно array() - Параметры для использования при сохранении данных записей, см. $options выше.
Возвращаемое значение
mixedЕсли атомарно: true при успехе, или false при неудаче. В противном случае: массив, похожий на переданный массив $data, но значения установлены в true/false в зависимости от того, успешно ли была сохранена каждая запись.
Ссылка
http://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-arrayhttp://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-saveall-array-data-null-array-options-array
saveAssociatedsource public
saveAssociated( array $data null , array $options array() )
Сохраняет одну запись, а также все её непосредственно связанные записи.
Параметры
-
validate: Установите вfalseдля отключения валидации, вtrueдля валидации каждой записи перед сохранением, в 'first' для валидации всех записей перед сохранением любой (по умолчанию), -
atomic: Если true (по умолчанию), попытается сохранить все записи в одной транзакции. Следует установить в false, если база данных/таблица не поддерживает транзакции. -
fieldList: Эквивалент параметра $fieldList в Model::save(). Он должен быть ассоциативным массивом с именем модели в качестве ключа и массивом полей в качестве значения. Например:array( 'SomeModel' => array('field'), 'AssociatedModel' => array('field', 'otherfield') )
-
deep: Если установлено в true, сохраняются не только непосредственно связанные данные, но и вложенные связанные данные. -
callbacks: Смотрите Model::save() -
counterCache: Смотрите Model::save()
Параметры
- массив
$dataнеобязательно null - Данные записи для сохранения. Это должен быть массив с индексами по имени ассоциации.
- массив
$optionsнеобязательно array() - Параметры для использования при сохранении данных записей, см. $options выше.
Возвращаемое значение
mixedЕсли атомарно: True при успехе, или false при неудаче. В противном случае: массив, похожий на переданный массив $data, но значения установлены в true/false в зависимости от того, успешно ли была сохранена каждая запись.
Исключения
PDOExceptionPDOException
Ссылка
http://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-arraysaveFieldsource public
saveField( string $name , mixed $value , boolean|array $validate false )
Сохраняет значение одного поля в базе данных на основе текущего ID модели.
Параметры
- строка
$name - Имя поля таблицы
- смешанный
$value - Значение поля
- boolean|массив
$validateнеобязательно false - Либо boolean, либо массив. Если boolean, указывает, нужно ли выполнять валидацию перед сохранением. Если массив, позволяет управлять параметрами 'validate', 'callbacks' и 'counterCache'. Смотрите Model::save() для подробностей о каждом параметре.
Возвращаемое значение
boolean|arrayСм. Model::save() False при ошибке или массив данных модели при успехе.
См. также
Model::save()Ссылка
http://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-savefield-string-fieldname-string-fieldvalue-validate-falsesaveManysource public
saveMany( array $data null , array $options array() )
Сохраняет несколько отдельных записей для одной модели
Параметры
-
validate: Установите в false для отключения валидации, в true для валидации каждой записи перед сохранением, в 'first' для валидации всех записей перед сохранением любой (по умолчанию), -
atomic: Если true (по умолчанию), попытается сохранить все записи в одной транзакции. Следует установить в false, если база данных/таблица не поддерживает транзакции. -
fieldList: Эквивалент параметра $fieldList в Model::save() -
deep: Если установлено в true, все связанные данные также будут сохранены. -
callbacks: Смотрите Model::save() -
counterCache: Смотрите Model::save()
Параметры
- массив
$dataнеобязательно null - Данные записей для сохранения. Это должен быть массив с числовыми индексами
- массив
$optionsнеобязательно array() - Параметры для использования при сохранении данных записей, см. $options выше.
Возвращаемое значение
mixedЕсли атомарно: True при успехе, или false при неудаче. В противном случае: массив, похожий на переданный массив $data, но значения установлены в true/false в зависимости от того, успешно ли была сохранена каждая запись.
Исключения
PDOExceptionPDOException
Ссылка
http://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-savemany-array-data-null-array-options-arrayschemasource public
schema( boolean|string $field false )
Возвращает массив метаданных таблицы (имена и типы столбцов) из базы данных. $field => keys(тип, null, значение по умолчанию, ключ, длина, доп.)
Параметры
- boolean|строка
$fieldнеобязательно false - Установите в true для перезагрузки схемы, или в строку, чтобы вернуть определённое поле
Возвращаемое значение
array|nullМассив метаданных таблицы
setsource public
set( string|array|SimpleXmlElement|DomNode $one , string $two null )
Эта функция выполняет два действия:
1. она ищет первичный ключ в массиве $one, и если он найден, устанавливает текущий id в значение $one[id]. Для всех остальных ключей, кроме 'id', ключи и значения из $one копируются в свойство 'data' этого объекта. 2. Возвращает массив со всеми ключами и значениями из $one. (Альтернативный входной формат: два строки, которые преобразуются в массив с одним элементом и двумя измерениями, используя $one в качестве ключа, а $two в качестве значения.)
Параметры
- string|array|SimpleXmlElement|DomNode
$one - Массив или строка данных
- string
$twoнеобязательно null - Строковое значение для альтернативного метода ввода данных
Возвращает
array|nullДанные со всеми ключами и значениями из $one, иначе null.
Ссылка
http://book.cakephp.org/2.0/ru/models/saving-your-data.htmlsetDataSourcesource public
setDataSource( string $dataSource null )
Устанавливает Источник данных, к которому привязан этот модель.
Параметры
- string
$dataSourceнеобязательно null - Имя Источника данных, как определено в app/Config/database.php
Исключения
MissingConnectionExceptionMissingConnectionException
setInsertIDsource public
setInsertID( integer|string $id )
Устанавливает ID последней записи, вставленной этой моделью
Параметры
- integer|string
$id - ID последней вставленной записи
setSourcesource public
setSource( string $tableName )
Устанавливает пользовательскую таблицу для вашего класса модели. Используется контроллером для выбора таблицы базы данных.
Параметры
- string
$tableName - Имя пользовательской таблицы
Исключения
MissingTableExceptionкогда таблица базы данных $tableName не найдена в источнике данных
unbindModelsource public
unbindModel( array $params , boolean $reset true )
Отключает ассоциации в динамическом режиме.
Если $reset равен false, ассоциация не будет сброшена к исходным значениям, определённым в модели
Пример: Отключить связанную модель Заявки, чтобы временно уменьшить нагрузку на модель Пользователь:
$this->User->unbindModel(array('hasMany' => array('SupportRequest'))); Или альтернативно: $this->User->unbindModel(array('hasMany' => 'SupportRequest'));
Отключенные модели, которые не сделаны постоянными, будут сброшены при следующем вызове Model::find()
Параметры
- array
$params - Набор связей для отключения (индексированный по типу связи)
- boolean
$resetнеобязательно true - Установите в false, чтобы сделать отключение постоянным
Возвращает
booleanУспех
Ссылка
http://book.cakephp.org/2.0/ru/models/associations-linking-models-together.html#creating-and-destroying-associations-on-the-flyupdateAllsource public
updateAll( array $fields , mixed $conditions true )
Обновляет несколько записей модели на основе набора условий.
Параметры
- array
$fields - Набор полей и значений, индексированных по полям. Поля обрабатываются как SQL фрагменты, для вставки литерных значений вручную экранируйте данные.
- mixed
$conditionsнеобязательно true - Условия для соответствия, true для всех записей
Возвращает
booleanTrue при успехе, false при ошибке
Ссылка
http://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-updateall-array-fields-mixed-conditionsupdateCounterCachesource public
updateCounterCache( array $keys array() , boolean $created false )
Обновляет счётчики кэша принадлежности после операции сохранения или удаления
Параметры
- array
$keysнеобязательно array() - Необязательные данные внешнего ключа, по умолчанию информация $this->data
- boolean
$createdнеобязательно false - True, если была создана новая запись, иначе обновляются только ассоциации с определённым 'counterScope'
validateAssociatedsource public
validateAssociated( array $data , array $options array() )
Проверяет одну запись, а также все её непосредственно связанные записи.
Параметры
-
atomic: Если true (по умолчанию), возвращает boolean. Если false, возвращает массив. -
fieldList: Эквивалентно параметру $fieldList в Model::save() -
deep: Если установлено в true, проверяется не только непосредственно связанная данные, но и вложенные связанные данные.
Предупреждение: Этот метод может потенциально изменить переданный аргумент $data, Если вы этого не хотите, сделайте копию $data перед передачей его этому методу
Параметры
- array
$data - $data Данные записи для проверки. Должен быть массивом, индексированным по имени ассоциации.
- array
$optionsнеобязательно array() - Параметры для использования при проверке данных записи (см. выше), также см. $options в validates().
Возвращает
array|booleanЕсли атомарно: True при успехе или false при ошибке. Иначе: массив, похожий на переданный массив $data, но значения установлены в true/false в зависимости от того, прошла ли проверку каждая запись успешно.
validateManysource public
validateMany( array $data , array $options array() )
Проверяет несколько отдельных записей для одной модели
Параметры
-
atomic: Если true (по умолчанию), возвращает boolean. Если false, возвращает массив. -
fieldList: Эквивалентно параметру $fieldList в Model::save() -
deep: Если установлено в true, будут проверены все связанные данные.
Предупреждение: Этот метод может потенциально изменить переданный аргумент $data, Если вы этого не хотите, сделайте копию $data перед передачей его этому методу
Параметры
- array
$data - $data Данные записи для проверки. Должен быть массивом с числовыми индексами
- array
$optionsнеобязательно array() - Параметры для использования при проверке данных записи (см. выше), также см. $options в validates().
Возвращает
boolean|arrayЕсли атомарно: True при успехе или false при ошибке. Иначе: массив, похожий на переданный массив $data, но значения установлены в true/false в зависимости от того, прошла ли проверку каждая запись успешно.
validatessource public
validates( array $options array() )
Возвращает true, если все поля проходят проверку. Будет проверять ассоциации hasAndBelongsToMany, которые используют ключ 'with'. Поскольку _saveMulti не может выйти из операции сохранения.
Будет проверять текущие данные. Используйте Model::set() или Model::create() для установки активных данных.
Параметры
- array
$optionsнеобязательно array() - Необязательный массив с пользовательскими параметрами, которые будут доступны в обратном вызове beforeValidate
Возвращает
booleanTrue, если нет ошибок
validatorsource public
validator( ModelValidator $instance null )
Возвращает экземпляр валидатора модели для этого класса
Параметры
-
ModelValidator$instanceнеобязательно null - Экземпляр валидатора модели. Если null, будет создан новый экземпляр ModelValidator с использованием текущего объекта модели
Возвращает
ModelValidatorModelValidator
Наследуемые методы от Объекта
_mergeVarssource protected
_mergeVars( array $properties , string $class , boolean $normalize true )
Объединяет свойства объекта $property со свойствами в определении $class. Значение свойства этого класса для свойства будет объединено поверх значения $class'.
Это обеспечивает некоторую магию DRY, предоставляемую CakePHP. Если вы хотите отключить её, переопределите этот метод как пустую функцию.
Параметры
- массив
$properties - Имя свойств для объединения.
- строка
$class - Класс для объединения свойства с.
- логическое значение
$normalizeнеобязательно true - Установите в значение true, чтобы выполнить свойства через Hash::normalize() перед объединением.
_setsource protected
_set( array $properties array() )
Позволяет задавать несколько свойств объекта в одной строке кода. Будет устанавливать только свойства, которые являются частью объявления класса.
Параметры
- массив
$propertiesнеобязательно array() - Ассоциативный массив, содержащий свойства и соответствующие значения.
_stopsource protected
_stop( integer|string $status 0 )
Останавливает выполнение текущего сценария. Обёртка для exit(), что упрощает тестирование.
Параметры
- целое число/строка
$statusнеобязательно 0 - см. http://php.net/exit для значений
dispatchMethodsource public
dispatchMethod( string $method , array $params array() )
Вызывает метод этого объекта с заданными параметрами. Предоставляет объектно-ориентированную обёртку для call_user_func_array
Параметры
- строка
$method - Имя вызываемого метода
- массив
$paramsнеобязательно array() - Список параметров для использования при вызове $method
Возвращает
mixedРезультат вызова метода
logsource public
log( string $msg , integer $type LOG_ERR , null|string|array $scope null )
Удобный метод для записи сообщения в CakeLog. См. CakeLog::write() для получения дополнительной информации о записи в журналы.
Параметры
- строка
$msg - Сообщение журнала
- целое число
$typeнеобязательно LOG_ERR - Константа типа ошибки. Определена в app/Config/core.php.
- null/строка/массив
$scopeнеобязательно null - Область(и), в которой создаётся сообщение журнала. См. CakeLog::config() для получения дополнительной информации о областях ведения журнала.
Возвращает
booleanУспех записи в журнал
requestActionsource public
requestAction( string|array $url , array $extra array() )
Вызывает метод контроллера из любого места. Может использоваться для подключения контроллеров друг к другу или связывания плагинов с основным приложением. requestAction может использоваться для возвращения рендеренных представлений или извлечения возвращаемого значения из действий контроллера.
Под капотом этот метод использует Router::reverse() для преобразования параметра $url в строку URL. Вы должны использовать форматы URL, совместимые с Router::reverse()
Передача данных POST и GET
Данные POST и GET могут быть смоделированы в requestAction. Используйте $extra['url'] для данных GET. Параметр $extra['data'] позволяет моделировать данные POST.
Параметры
- строка/массив
$url - Строка или URL на основе массива. В отличие от других массивов URL в CakePHP, этот URL не будет автоматически обрабатывать переданные и именованные аргументы в параметре $url.
- массив
$extraнеобязательно array() - Если массив включает ключ "return", он устанавливает AutoRender в значение true. Также может использоваться для отправки данных GET/POST и именованных/переданных аргументов.
Возвращает
mixedБулево значение true или false при успехе/ошибке, или содержимое рендеренного действия, если в $extra установлен ключ 'return'.
toStringsource public
toString( )
Преобразование объекта в строку. Каждый класс может переопределить этот метод по мере необходимости.
Возвращает
stringИмя этого класса
Сводка свойств
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/2.7/class-Model.html