Класс CakeTestModel
Модель для расширения, помогающая при тестировании.
- Объект
-
Модель реализует CakeEventListener -
CakeTestModel
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: Лицензия MIT
Расположено в Cake/TestSuite/Fixture/CakeTestModel.php
Подробное описание метода
__constructисходный код public
__construct( integer|string|array $id false , string $table null , string $ds null )
Устанавливает порядок по умолчанию для модели, чтобы избежать проблем с тестами из-за неправильного порядка, когда порядок не определён в методах поиска. Постгрес может возвращать результаты в любом порядке, который он считает подходящим, если он не указан
Параметры
- integer|string|array
$idнеобязательно false - Установите этот идентификатор для этой модели при запуске, также может быть массивом опций, см. выше.
- string
$tableнеобязательно null - Имя таблицы базы данных для использования.
- string
$dsнеобязательно null - Имя подключения к источнику данных.
Переопределяет
Model::__construct() saveисходный код public
save( array $data null , boolean|array $validate true , array $fieldList array() )
Переопределение save() для установки CakeTestSuiteDispatcher::date() в качестве форматера для полей created, modified и updated
Параметры
- array
$dataнеобязательно null - Данные для сохранения
- boolean|array
$validateнеобязательно true - Проверка или опции.
- array
$fieldListнеобязательно array() - Список разрешённых полей
Возвращает
mixedсмешанное значение
Выбрасывает
ExceptionИсключение
PDOExceptionPDOException
Переопределяет
Model::save() Наследованные методы от Модель
__callисходный код public
__call( string $method , array $params )
Обрабатывает вызовы пользовательских методов, таких как findBy<поле> для моделей БД и пользовательских вызовов RPC для удалённых источников данных.
Параметры
- string
$method - Имя вызываемого метода.
- array
$params - Параметры для метода.
Возвращает
mixedРезультат вызываемого метода
__getисходный код public
__get( string $name )
Возвращает значение запрошенной переменной, если она может быть установлена с помощью __isset()
Параметры
- string
$name - Запрошенная переменная для получения её значения или ссылки
Возвращает
mixedзначение запрошенной переменной, если она установлена
__issetисходный код public
__isset( string $name )
Обрабатывает леничную загрузку ассоциаций моделей, проверяя массивы ассоциаций на наличие запрашиваемой переменной.
Параметры
- string
$name - Переменная, проверенная на существование в классе
Возвращает
booleantrue, если переменная существует (если это не загруженная модельная ассоциация, она будет создана), false в противном случае
_addToWhiteListисходный код protected
_addToWhiteList( string $key , array $options )
Вспомогательный метод для saveAll() и др., чтобы добавить внешний ключ в список полей
Параметры
- string
$key - Имя поля, которое нужно добавить в список
- array
$options - Список опций
Возвращает
arrayопции
_clearCacheисходный код protected
_clearCache( string $type null )
Очищает кэш для этой модели.
Параметры
- string
$typeнеобязательно null - Если null, это удаляет кэшированные представления, если Cache.check является истинным. Будет использоваться для удаления кэша запросов тоже
Возвращает
mixedTrue при удалении, null в противном случае
_collectForeignKeysисходный код protected
_collectForeignKeys( string $type 'belongsTo' )
Собрать внешние ключи из ассоциаций.
Параметры
- string
$typeнеобязательно 'belongsTo' - Тип ассоциации.
Возвращает
arrayмассив
_constructLinkedModelисходный код 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();
_deleteDependentисходный код protected
_deleteDependent( string $id , boolean $cascade )
Каскадно удаляет записи модели через дочерние записи hasMany и hasOne.
Параметры
- string
$id - Идентификатор записи, которая была удалена
- boolean
$cascade - Установите в true, чтобы удалить записи, зависящие от этой записи
_deleteLinksисходный код protected
_deleteLinks( string $id )
Каскадно удаляет записи модели через ключи объединения HABTM.
Параметры
- string
$id - Идентификатор записи, которая была удалена
_doSaveисходный код 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/en/models/saving-your-data.html_filterResultsисходный код protected
_filterResults( array $results , boolean $primary true )
Пропускает результаты запроса через методы model и behavior afterFind().
Параметры
- array
$results - Результаты для фильтрации
- boolean
$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массив
См. также
Model::find()_findCountsource protected
_findCount( string $state , array $query , array $results array() )
Обрабатывает логику фильтра перед/после операций find('count'). Вызывается только Model::find().
Параметры
- строка
$state - Либо "before", либо "after"
- массив
$query - Запрос.
- массив
$resultsнеобязательно массив() - Результаты.
Возвращаемое значение
integerКоличество найденных записей или false
См. также
Model::find()_findFirstsource protected
_findFirst( string $state , array $query , array $results array() )
Обрабатывает логику фильтра перед/после операций find('first'). Вызывается только Model::find().
Параметры
- строка
$state - Либо "before", либо "after"
- массив
$query - Запрос.
- массив
$resultsнеобязательно массив() - Результаты.
Возвращаемое значение
arrayмассив
См. также
Model::find()_findListsource protected
_findList( string $state , array $query , array $results array() )
Обрабатывает логику фильтра перед/после операций find('list'). Вызывается только Model::find().
Параметры
- строка
$state - Либо "before", либо "after"
- массив
$query - Запрос.
- массив
$resultsнеобязательно массив() - Результаты.
Возвращаемое значение
arrayКлючевые/значения пар первичных ключей/полей отображения всех найденных записей
См. также
Model::find()_findNeighborssource protected
_findNeighbors( string $state , array $query , array $results array() )
Определяет предыдущее значение поля, затем использует логику для поиска записей 'wrapping' и возвращает их.
Параметры
- строка
$state - Либо "before", либо "after"
- массив
$query - Запрос.
- массив
$resultsнеобязательно массив() - Результаты.
Возвращаемое значение
arrayмассив
_findThreadedsource protected
_findThreaded( string $state , array $query , array $results array() )
В случае неоднозначных результатов (несколько результатов верхнего уровня с разными parent_id) результаты верхнего уровня с разными parent_id, отличными от первого результата, будут отброшены
Параметры
- строка
$state - Либо "before", либо "after".
- массив
$query - Запрос.
- массив
$resultsнеобязательно массив() - Результаты.
Возвращаемое значение
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 - Тип операции поиска (all / first / count / neighbors / list / threaded)
- массив
$query - Поля параметров (conditions / fields / joins / limit / offset / order / page / group / callbacks)
Возвращаемое значение
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() )
Вызывается после каждой успешной операции сохранения.
Параметры
- булево
$created - True, если это сохранение создало новую запись
- массив
$optionsнеобязательно массив() - Параметры, переданные из Model::save().
См. также
Model::save()Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#aftersavebeforeDeletesource public
beforeDelete( boolean $cascade true )
Вызывается перед каждой операцией удаления.
Параметры
- boolean
$cascadeнеобязательно true - Если true, записи, зависящие от этой записи, также будут удалены
Возвращает
booleanИстина, если операция должна быть продолжена, ложь, если она должна быть прервана
Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#beforedeletebeforeFindsource public
beforeFind( array $query )
Вызывается перед каждой операцией поиска. Возвратите false, если хотите остановить вызов поиска, в противном случае верните (изменённые) данные запроса.
Параметры
- массив
$query - Данные, используемые для выполнения этого запроса, т. е. условия, порядок и т. д.
Возвращает
mixedистина, если операция должна быть продолжена, ложь, если она должна быть прервана; или, изменённые $query для продолжения с новыми $query
Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#beforefindbeforeSavesource public
beforeSave( array $options array() )
Вызывается перед каждой операцией сохранения, после проверки данных. Верните значение, отличное от true, чтобы остановить сохранение.
Параметры
- массив
$optionsнеобязательно массив() - Параметры, переданные из Model::save().
Возвращает
booleanИстина, если операция должна быть продолжена, ложь, если она должна быть прервана
См. также
Model::save()Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#beforesavebeforeValidatesource public
beforeValidate( array $options array() )
Вызывается во время операций проверки данных, перед проверкой. Обратите внимание, что пользовательские правила проверки можно определить в $validate.
Параметры
- массив
$optionsнеобязательно массив() - Параметры, переданные из Model::save().
Возвращает
booleanИстина, если операция проверки должна быть продолжена, ложь для прерывания
См. также
Model::save()Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#beforevalidatebindModelsource public
bindModel( array $params , boolean $reset true )
Привязка моделей ассоциаций на лету.
Если $reset ложь, ассоциация не будет сброшена к исходным значениям, определённым в модели
Пример: Добавление новой привязки hasOne к модели Profile, не определённой в исходном коде модели:
$this->User->bindModel(array('hasOne' => array('Profile')));
Привязки, которые не сделаны постоянными, будут сброшены в результате следующего вызова Model::find() для этой модели.
Параметры
- массив
$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-flybuildQuerysource public
buildQuery( string $type 'first' , array $query array() )
Создаёт массив запроса, который используется источником данных для генерации запроса для извлечения данных.
Параметры
- строка
$typeнеобязательно 'first' - Тип операции поиска (все / первый / подсчёт / соседи / список / нитевой)
- массив
$queryнеобязательно массив() - Поля опций (условия / поля / соединения / ограничение / смещение / порядок / страница / группа / обратные вызовы)
Возвращает
array|nullМассив запроса или null, если его нельзя было создать по каким-либо причинам
См. также
Model::find()Триггеры
Model.beforeFind $this, array($query)clearsource public
clear( )
Эта функция — удобная обертка класса для создания (false) и, как следует из названия, очищает id, данные и ошибки проверки.
Возвращает
booleanВсегда истина при успехе
См. также
Model::create()createsource public
create( boolean|array $data array() , boolean $filterKey false )
Инициализирует модель для записи новой записи, загружает значения по умолчанию для тех полей, которые не определены в $data, и очищает предыдущие ошибки проверки. Особенно полезно для сохранения данных в циклах.
Параметры
- boolean|массив
$dataнеобязательно массив() - Необязательный массив данных для присвоения модели после её создания. Если null или false, значения по умолчанию схемы не объединяются.
- boolean
$filterKeyнеобязательно false - Если истина, перезаписывает любой входной первичный ключ пустым значением
Возвращает
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 )
Распаковывает сложный тип данных (массив или объект) в одно значение поля.
Параметры
- строка
$field - Имя поля, которое будет распаковано
- массив|объект
$data - Массив или объект, которые будут распакованы в поле
Возвращает
mixedПолученные данные, которые должны быть присвоены полю
deletesource public
delete( integer|string $id null , boolean $cascade true )
Удаляет запись для заданного ID. Если ID не указан, используется текущий ID. Возвращает true при успехе.
Параметры
- целое число|строка
$idнеобязательно null - ID записи для удаления
- boolean
$cascadeнеобязательно true - Установите в значение true, чтобы удалить записи, зависящие от этой записи
Возвращает
booleanИстина при успехе
Ссылка
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 )
Удаляет несколько записей модели на основе набора условий.
Параметры
- смешанный
$conditions - Условия для соответствия
- boolean
$cascadeнеобязательно true - Установите в значение true, чтобы удалить записи, зависящие от этой записи
- boolean
$callbacksнеобязательно false - Выполнить обратные вызовы
Возвращает
booleanИстина при успехе, ложь при неудаче
Ссылка
http://book.cakephp.org/2.0/ru/models/deleting-data.html#deleteallescapeFieldsource public
escapeField( string $field null , string $alias null )
Выполняет экранирование имени поля и добавляет имя модели. Экранирование выполняется в соответствии с правилами текущего драйвера базы данных.
Параметры
- строка
$fieldнеобязательно null - Поле для экранирования (например: id)
- строка
$aliasнеобязательно null - Псевдоним модели (например: Пост)
Возвращает
stringИмя экранированного поля для этой модели (например, id становится
Post.id).existssource public
exists( integer|string $id null )
Возвращает true, если запись с определённым ID существует.
Если $id не передан, вызывается Model::getID() для получения текущего идентификатора записи, а затем выполняется Model::find('count') на текущем источнике данных, чтобы установить наличие записи в постоянном хранилище.
Параметры
- integer|string
$idoptional null - ID записи для проверки существования
Возвращает
booleanTrue, если такая запись существует
fieldsource public
field( string $name , array $conditions null , string $order null )
Возвращает содержимое одного поля, учитывая предоставленные условия, первой записи в заданном порядке.
Параметры
- string
$name - Имя поля для получения.
- array
$conditionsoptional null - SQL условия (по умолчанию NULL).
- string
$orderoptional 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() )
Запрашивает источник данных и возвращает массив результатов.
Используется для выполнения операций поиска, где первый аргумент — тип операции поиска (все / первый / счёт / соседи / список / нитевидный), второй параметр — параметры для поиска (индексированный массив, включая: '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
$typeoptional 'first' - Тип операции поиска (все / первый / счёт / соседи / список / нитевидный)
- array
$queryoptional 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
$typeoptional null - Только ассоциации результатов этого типа
Возвращает
array|nullАссоциации
getColumnTypesource public
getColumnType( string $column )
Возвращает тип столбца столбца в модели.
Параметры
- string
$column - Имя столбца модели
Возвращает
stringТип столбца
getColumnTypessource public
getColumnTypes( )
Возвращает ассоциативный массив имён полей и типов столбцов.
Возвращает
arrayТипы полей, индексированные по имени поля
getDataSourcesource public
getDataSource( )
Получает источник данных, к которому привязана эта модель.
Возвращает
DataSourceОбъект DataSource
getEventManagersource public
getEventManager( )
Возвращает экземпляр менеджера CakeEventManager, обрабатывающий любые обратные вызовы. Вы можете использовать этот экземпляр для регистрации новых слушателей или обратных вызовов для событий модели, или создавать собственные события и запускать их по своему желанию.
Возвращает
CakeEventManagerCakeEventManager
getIDsource public
getID( integer $list 0 )
Возвращает ID текущей записи.
Параметры
- integer
$listoptional 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 )
Возвращает выражение для виртуального поля модели.
Параметры
- string
$fieldoptional null - Имя поля для поиска
Возвращает
mixedЕсли $field — строковое выражение, связанное с виртуальным полем $field. Если $field равен null, возвращает массив всех виртуальных полей модели или false, если такие поля не существуют.
hasAnysource public
hasAny( array $conditions null )
Возвращает true, если существует запись, удовлетворяющая заданным условиям.
Параметры
- array
$conditionsoptional null - Массив SQL условий
Возвращает
booleanTrue, если такая запись существует
hasFieldsource public
hasField( string|array $name , boolean $checkVirtual false )
Возвращает true, если указанное поле существует в таблице базы данных модели.
Параметры
- строка|массив
$name - Имя поля для поиска или массив имён
- логическое значение
$checkVirtualнеобязательно false - проверяет, объявлено ли поле как виртуальное
Возвращает
mixedЕсли $name — строка, возвращает логическое значение, указывающее, существует ли поле. Если $name — массив имён полей, возвращает первое существующее поле или false, если ни одно из них не существует.
hasMethodsource public
hasMethod( string $method )
Проверяет, доступен ли метод для модели. Будет проверено наличие методов самой модели, унаследованных методов и методов, доступных через поведения.
Параметры
- строка
$method - Метод, который нужно вызвать.
Возвращает
booleanTrue, если метод доступен.
implementedEventssource public
implementedEvents( )
Возвращает список всех событий, которые будут срабатывать в модели на протяжении её жизненного цикла. Вы можете переопределить эту функцию, чтобы добавить свои обработчики событий
Возвращает
arrayмассив
Реализация
CakeEventListener::implementedEvents() invalidFieldssource public
invalidFields( array|string $options array() )
Возвращает массив полей, которые не прошли валидацию в текущей модели.
Кроме того, он заполняет свойство validationErrors модели тем же массивом.
Параметры
- массив|строка
$optionsнеобязательно массив() - Необязательный массив с пользовательскими параметрами, которые будут доступны в обратном вызове 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массив
onErrorsource public
onError( )
Вызывается при возникновении ошибки на уровне источника данных.
Ссылка
http://book.cakephp.org/2.0/ru/models/callback-methods.html#onerrorquerysource public
query( string $sql )
Возвращает набор результатов для заданного SQL-запроса. Пользовательские SQL-запросы должны выполняться с помощью этого метода.
Метод может принимать 2 и 3 параметра.
- 2-й параметр: либо логическое значение для управления кэшированием запроса, либо массив параметров для использования с замещающими параметрами подготовленного оператора.
- 3-й параметр: если 2-й параметр указан, логический флаг для включения/отключения кэширования запроса.
Параметры
- строка
$sql - SQL-запрос
Возвращает
mixedМассив набора результатов или логическое значение, указывающее успех/неудачу в зависимости от выполненного запроса
Ссылка
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Успешно
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 )
Сохраняет значение одного поля в базе данных на основе текущего идентификатора модели.
Параметры
- строка
$name - Имя поля таблицы
- смешанное
$value - Значение поля
- boolean|array
$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(type, null, default, key, length, extra)
Параметры
- boolean|string
$fieldнеобязательно false - Установите в true, чтобы перезагрузить схему, или в строку, чтобы вернуть конкретное поле
Возвращает
array|nullМассив метаданных таблицы
setsource public
set( string|array|SimpleXmlElement|DomNode $one , string $two null )
Эта функция выполняет два действия:
1. она сканирует массив $one на наличие первичного ключа, и если он найден, устанавливает текущий идентификатор в значение $one[id]. Для всех ключей, кроме 'id', ключи и значения $one копируются в свойство 'data' этого объекта. 2. Возвращает массив со всеми ключами и значениями $one. (Альтернативный ввод данных: две строки, которые преобразованы в массив из одной строки, двумерного массива, используя $one в качестве ключа и $two как значение.)
Параметры
- строка|массив|SimpleXmlElement|DomNode
$one - Массив или строка данных
- строка
$twoнеобязательно null - Строковое значение для альтернативного метода ввода данных
Возвращает
array|nullДанные со всеми ключами и значениями $one, в противном случае null.
Ссылка
http://book.cakephp.org/2.0/ru/models/saving-your-data.htmlsetDataSourcesource public
setDataSource( string $dataSource null )
Устанавливает DataSource, к которому привязана эта модель.
Параметры
- строка
$dataSourceнеобязательно null - Имя DataSource, определенное в app/Config/database.php
Выбрасывает
MissingConnectionExceptionMissingConnectionException
setInsertIDsource public
setInsertID( integer|string $id )
Устанавливает ID последней записи, вставленной этой моделью
Параметры
- целое число|строка
$id - ID последней вставленной записи
setSourcesource public
setSource( string $tableName )
Устанавливает пользовательскую таблицу для вашего класса модели. Используется вашим контроллером для выбора таблицы базы данных.
Параметры
- строка
$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()
Параметры
- массив
$params - Набор привязок для отключения (индексированные по типу привязки)
- логическое значение
$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 )
Обновляет несколько записей модели на основе набора условий.
Параметры
- массив
$fields - Набор полей и значений, индексированных по полям. Поля обрабатываются как SQL-фрагменты. Для вставки буквальных значений вручную убедитесь, что данные экранированы.
- смешанный тип
$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 )
Обновляет кэш счетчиков ассоциаций belongsTo после операции сохранения или удаления.
Параметры
- массив
$keysнеобязательно array() - Необязательные данные внешнего ключа, по умолчанию содержат информацию из $this->data
- логическое значение
$createdнеобязательно false - True, если была создана новая запись, иначе обновляются только ассоциации с определённым 'counterScope'
validateAssociatedsource public
validateAssociated( array $data , array $options array() )
Валидирует одну запись, а также все непосредственно связанные с ней записи.
Параметры
-
atomic: Если true (по умолчанию), возвращает boolean. Если false, возвращает массив. -
fieldList: Эквивалентно параметру $fieldList в Model::save() -
deep: Если установлено в true, валидируются не только непосредственно связанные данные, но и данные вложенных ассоциаций.
Предупреждение: Этот метод может потенциально изменить переданный аргумент $data, Если этого не нужно, сделайте копию $data перед передачей в этот метод.
Параметры
- массив
$data - $data Данные записи для валидации. Должен быть массивом, индексированным по имени ассоциации.
- массив
$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 перед передачей в этот метод.
Параметры
- массив
$data - $data Данные записи для валидации. Это должен быть массив с числовой индексацией.
- массив
$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() для установки активных данных.
Параметры
- массив
$optionsнеобязательно array() - Необязательный массив с пользовательскими параметрами, доступными в обратном вызове beforeValidate.
Возвращает
booleanTrue, если ошибок нет
validatorsource public
validator( ModelValidator $instance null )
Возвращает экземпляр валидатора модели для этого класса.
Параметры
-
ModelValidator$instanceнеобязательно null - Экземпляр валидатора модели. Если null, будет создан новый экземпляр ModelValidator, используя текущий объект модели.
Возвращает
ModelValidatorModelValidator
Методы, унаследованные от Object
_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() )
Вызывает метод на этом объекте с указанными параметрами. Предоставляет OO-обёртку для 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необязательно массив() - Если массив включает ключ "return", он устанавливает AutoRender в значение true. Также может использоваться для отправки данных GET/POST и именованных/переданных аргументов.
Возвращает
mixedБулево значение true или false при успехе/неудачи, или содержимое отрисованного действия, если в $extra установлен ключ 'return'.
toStringsource public
toString( )
Преобразование объекта в строку. Каждый класс может переопределить этот метод по необходимости.
Возвращает
stringИмя этого класса
Краткое описание свойств
Свойства, унаследованные от Model
$Behaviorssource
public BehaviorCollection
Содержит объекты поведения, в настоящее время привязанные к этой модели.
null $__backAssociationsource
public array
Временное хранение ассоциаций моделей для динамической (от)вязки.
array() $__safeUpdateModesource
public boolean
Режим безопасного обновления. Если true, это предотвращает Model::save() от генерации запроса с WHERE 1 = 1 при проблемах с конкуренцией.
false $_associationKeyssource
protected array
Список ключевых ассоциаций по умолчанию.
array( 'belongsTo' => array('className', 'foreignKey', 'conditions', 'fields', 'order', 'counterCache'), 'hasOne' => array('className', 'foreignKey', 'conditions', 'fields', 'order', 'dependent'), 'hasMany' => array('className', 'foreignKey', 'conditions', 'fields', 'order', 'limit', 'offset', 'dependent', 'exclusive', 'finderQuery', 'counterQuery'), 'hasAndBelongsToMany' => array('className', 'joinTable', 'with', 'foreignKey', 'associationForeignKey', 'conditions', 'fields', 'order', 'limit', 'offset', 'unique', 'finderQuery') )
$_associationssource
protected array
Содержит предоставленные/сгенерированные имена ключей ассоциаций и другие данные для всех ассоциаций.
array('belongsTo', 'hasOne', 'hasMany', 'hasAndBelongsToMany')
$_eventManagersource
protected CakeEventManager
Экземпляр CakeEventManager, используемый этой моделью для отправки внутренних событий.
null $_insertIDsource
protected integer
Идентификатор записи модели, которая была последней вставлена.
null $_sourceConfiguredsource
protected boolean
Настроен ли источник данных.
См.
Model::getDataSource()false $actsAssource
public array
Список поведений, которые нужно загрузить, когда объект модели инициализируется. Параметры поведения могут быть переданы, используя имя поведения в качестве индекса. Пример:
public $actsAs = array('Translate', 'MyBehavior' => array('setting1' => 'value1'))
Ссылка
http://book.cakephp.org/2.0/ru/models/behaviors.html#using-behaviorsnull $belongsTosource
public array
Подробный список ассоциаций belongsTo.
Базовое использование
public $belongsTo = array('Group', 'Department');
Подробная настройка
public $belongsTo = array( 'Group', 'Department' => array( 'className' => 'Department', 'foreignKey' => 'department_id' ) );
Возможные ключи в ассоциации
-
className: имя класса модели, связанной с текущей моделью. Если вы определяете отношение 'Profile belongsTo User', ключ className должен быть равен 'User'. -
foreignKey: имя внешнего ключа, найденного в текущей модели. Это особенно полезно, если вам нужно определить несколько отношений belongsTo. Значение по умолчанию для этого ключа — подчеркнутое, единственное имя другой модели, дополненное '_id'. -
conditions: фрагмент SQL, используемый для фильтрации записей связанной модели. Рекомендуется использовать имена моделей в фрагментах SQL: 'User.active = 1' всегда лучше, чем просто 'active = 1'. -
type: тип соединения, используемый в запросе SQL, по умолчанию LEFT, но может не подойти во всех ситуациях, INNER может быть полезен, когда вы хотите получить все поля из основной и связанной моделей или ничего (эффективно при использовании с условиями). (Примечание: значение типа в нижнем регистре — т.е. left, inner) -
fields: список полей, которые необходимо получить, когда данные связанной модели извлекаются. По умолчанию возвращаются все поля. -
order: фрагмент SQL, определяющий порядок сортировки возвращаемых связанных строк. -
counterCache: Если установлено в true, связанная модель автоматически увеличивает или уменьшает поле "[имя_модели]_count" во внешней таблице всякий раз, когда вы выполняете save() или delete(). Если это строка, то это имя поля для использования. Значение в поле счетчика представляет количество связанных строк. -
counterScope: необязательный массив условий для обновления поля счетчика.
Ссылка
http://book.cakephp.org/2.0/ru/models/associations-linking-models-together.html#belongstoarray() $cacheQueriessource
public boolean
Включить кэширование запросов для этой модели. Это включает кэширование только в памяти, результаты не сохраняются после текущего запроса.
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#cachequeriesfalse $datasource
public array
Контейнер для данных, полученных этой моделью из постоянного хранилища (обычно, базы данных).
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#dataarray() $displayFieldsource
public string
Настраиваемое имя поля отображения. Поля отображения используются Scaffold, в элементах SELECT.
Это поле также используется в find('list') при вызове без дополнительных параметров в списке полей.
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#displayfieldnull $findMethodssource
public массив
Список допустимых параметров метода поиска, передаваемых в качестве первого параметра find().
array( 'all' => true, 'first' => true, 'count' => true, 'neighbors' => true, 'list' => true, 'threaded' => true )
$hasAndBelongsToManysource
public массив
Подробный список ассоциаций hasAndBelongsToMany.
Базовое использование
public $hasAndBelongsToMany = array('Role', 'Address');
Подробная настройка
public $hasAndBelongsToMany = array( 'Role', 'Address' => array( 'className' => 'Address', 'foreignKey' => 'user_id', 'associationForeignKey' => 'address_id', 'joinTable' => 'addresses_users' ) );
Возможные ключи в ассоциации
-
className: имя класса модели, связанной с текущей моделью. Если вы определяете связь "Рецепт HABTM Тег", ключ className должен быть равен 'Тег'. -
joinTable: Имя таблицы соединения, используемой в этой ассоциации (если текущая таблица не соответствует соглашениям об именовании для таблиц соединения HABTM). -
with: Определяет имя модели для таблицы соединения. По умолчанию CakePHP автоматически создаст модель. В приведённом выше примере она будет называться RecipesTag. С помощью этого ключа вы можете переопределить это имя по умолчанию. Модель таблицы соединения можно использовать как любую "обычную" модель для прямого доступа к таблице соединения. -
foreignKey: имя внешнего ключа, найденного в текущей модели. Это особенно полезно, если вам нужно определить несколько взаимосвязей HABTM. Значение по умолчанию для этого ключа — подчёркнутое, единственное имя текущей модели, с добавленным '_id'. -
associationForeignKey: имя внешнего ключа, найденного в другой модели. Это особенно полезно, если вам нужно определить несколько взаимосвязей HABTM. Значение по умолчанию для этого ключа — подчёркнутое, единственное имя другой модели, с добавленным '_id'. -
unique: Если true (значение по умолчанию), Cake сначала удалит существующие записи отношений в таблице внешних ключей перед добавлением новых при обновлении записи. Таким образом, существующие ассоциации необходимо передать снова при обновлении. Чтобы предотвратить удаление существующих записей отношений, установите этот ключ в строку 'keepExisting'. -
conditions: фрагмент SQL, используемый для фильтрации записей связанной модели. Хорошей практикой является использование имён моделей в фрагментах SQL: "Comment.status = 1" всегда лучше, чем просто "status = 1". -
fields: список полей, которые должны быть извлечены, когда извлекаются данные связанной модели. По умолчанию возвращаются все поля. -
order: фрагмент SQL, определяющий порядок сортировки возвращаемых связанных строк. -
limit: максимальное количество связанных строк, которые вы хотите получить. -
offset: количество связанных строк, которые нужно пропустить (учитывая текущие условия и порядок) перед извлечением и связыванием. -
finderQuery: полный запрос SQL, который CakePHP может использовать для извлечения связанных записей модели. Это следует использовать в ситуациях, требующих очень персонализированных результатов.
Ссылка
http://book.cakephp.org/2.0/ru/models/associations-linking-models-together.html#hasandbelongstomany-habtmarray() $hasManysource
public массив
Подробный список ассоциаций hasMany.
Базовое использование
public $hasMany = array('Comment', 'Task');
Подробная настройка
public $hasMany = array( 'Comment', 'Task' => array( 'className' => 'Task', 'foreignKey' => 'user_id' ) );
Возможные ключи в ассоциации
-
className: имя класса модели, связанной с текущей моделью. Если вы определяете связь "Пользователь hasMany Комментарий", ключ className должен быть равен 'Комментарий'. -
foreignKey: имя внешнего ключа, найденного в другой модели. Это особенно полезно, если вам нужно определить несколько взаимосвязей hasMany. Значение по умолчанию для этого ключа — подчёркнутое, единственное имя фактической модели, с добавленным '_id'. -
conditions: фрагмент SQL, используемый для фильтрации записей связанной модели. Хорошей практикой является использование имён моделей в фрагментах SQL: "Comment.status = 1" всегда лучше, чем просто "status = 1". -
fields: список полей, которые должны быть извлечены, когда извлекаются данные связанной модели. По умолчанию возвращаются все поля. -
order: фрагмент SQL, определяющий порядок сортировки возвращаемых связанных строк. -
limit: максимальное количество связанных строк, которые вы хотите получить. -
offset: количество связанных строк, которые нужно пропустить (учитывая текущие условия и порядок) перед извлечением и связыванием. -
dependent: Когда dependent установлен в true, возможно рекурсивное удаление модели. В этом примере записи Comment будут удалены, когда запись User, с которой они связаны, была удалена. -
exclusive: Когда exclusive установлен в true, рекурсивное удаление модели выполняет удаление с помощью вызова deleteAll(), а не удаление каждого сущности по отдельности. Это значительно повышает производительность, но может быть не идеально во всех случаях. -
finderQuery: полный запрос SQL, который CakePHP может использовать для извлечения связанных записей модели. Это следует использовать в ситуациях, требующих очень персонализированных результатов.
Ссылка
http://book.cakephp.org/2.0/ru/models/associations-linking-models-together.html#hasmanyarray() $hasOnesource
public массив
Подробный список ассоциаций hasOne.
Базовое использование
public $hasOne = array('Profile', 'Address');
Подробная настройка
public $hasOne = array( 'Profile', 'Address' => array( 'className' => 'Address', 'foreignKey' => 'user_id' ) );
Возможные ключи в ассоциации
-
className: имя класса модели, связанной с текущей моделью. Если вы определяете связь "Пользователь hasOne Профиль", ключ className должен быть равен 'Профиль'. -
foreignKey: имя внешнего ключа, найденного в другой модели. Это особенно полезно, если вам нужно определить несколько взаимосвязей hasOne. Значение по умолчанию для этого ключа — подчёркнутое, единственное имя текущей модели, с добавленным '_id'. В приведённом выше примере он будет по умолчанию 'user_id'. -
foreignKey: фрагмент SQL, используемый для фильтрации записей связанной модели. Хорошей практикой является использование имён моделей в фрагментах SQL: "Profile.approved = 1" всегда лучше, чем просто "approved = 1". -
fields: список полей, которые должны быть извлечены, когда извлекаются данные связанной модели. По умолчанию возвращаются все поля. -
order: фрагмент SQL, определяющий порядок сортировки возвращаемых связанных строк. -
dependent: Когда ключ dependent установлен в true, и метод delete() модели вызывается с параметром cascade, установленным в true, записи связанной модели также удаляются. В этом случае мы устанавливаем его в true, чтобы при удалении пользователя также удалялся и её профиль.
Ссылка
http://book.cakephp.org/2.0/ru/models/associations-linking-models-together.html#hasonearray() $idsource
public смешанный
Значение первичного ключа ID записи, на которую в данный момент указывает эта модель. Автоматически устанавливается после вставки в базу данных.
false $namesource
public строка
Имя модели.
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#namenull $ordersource
public строка
Имя(на) столбца(ов) и направление(ия) для сортировки результатов поиска по умолчанию.
public $order = "Post.created DESC"; public $order = array("Post.view_count DESC", "Post.rating DESC");
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#ordernull $primaryKeysource
public строка
Имя поля первичного ключа для этой модели.
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#primarykeynull $recursivesource
public integer
Количество ассоциаций, через которые необходимо пройти при вызовах find. По умолчанию извлекается только первый уровень.
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#recursive1 $schemaNamesource
public string
Содержит физическое имя схемы/базы данных для данной модели. Автоматически устанавливается при создании модели.
null $tablePrefixsource
public string
Префикс таблицы базы данных для таблиц в модели.
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#tableprefixnull $tableToModelsource
public array
Список имён таблиц, включённых в описание модели. Используется для ассоциаций.
array() $useConsistentAfterFindsource
public boolean
Если true, afterFind будет получать согласованно отформатированные результаты $results в случае, если $primary = false. Формат будет следующим:
$results = array( 0 => array( 'ModelName' => array( 'field1' => 'value1', 'field2' => 'value2' ) ) );
true $useTablesource
public string
Пользовательское имя таблицы базы данных или null/false, если ассоциация с таблицей не требуется.
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#usetablenull $validatesource
public array
Список правил валидации. Должен быть массивом с именем поля в качестве ключа и одним из следующих вариантов в качестве значения:
Валидация с использованием регулярных выражений
public $validate = array( 'name' => '/^[a-z].+$/i' );
Валидация с использованием методов (без параметров)
public $validate = array( 'name' => 'notBlank' );
Валидация с использованием методов (с параметрами)
public $validate = array( 'length' => array( 'rule' => array('lengthBetween', 5, 25) ) );
Валидация с использованием пользовательского метода
public $validate = array( 'password' => array( 'rule' => array('customValidation') ) ); public function customValidation($data) { // $data will contain array('password' => 'value') if (isset($this->data[$this->alias]['password2'])) { return $this->data[$this->alias]['password2'] === current($data); } return true; }
Валидация с сообщениями
Сообщения будут использоваться в Model::$validationErrors и могут быть использованы в FormHelper
public $validate = array( 'length' => array( 'rule' => array('lengthBetween', 5, 15), 'message' => array('Between %d to %d characters') ) );
Многократная валидация одного поля
public $validate = array( 'login' => array( array( 'rule' => 'alphaNumeric', 'message' => 'Only alphabets and numbers allowed', 'last' => true ), array( 'rule' => array('minLength', 8), 'message' => array('Minimum length of %d characters') ) ) );
Допустимые ключи в валидациях
-
rule: Строка с именем метода, регулярным выражением (начинающимся с косой черты) или массивом с методом и параметрами -
message: Строка с сообщением или массив, если есть несколько параметров. См. http://php.net/sprintf -
last: Булево значение, указывающее, следует ли продолжить валидацию других правил, если текущее правило не выполнено [По умолчанию: true] -
required: Булево значение, указывающее, должно ли поле быть присутствующим при сохранении -
allowEmpty: Булево значение, указывающее, может ли поле быть пустым -
on: Возможные значения:update,create. Указывают, что это правило применяется только при обновлении или создании
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#validatehttp://book.cakephp.org/2.0/ru/models/data-validation.html
array() $validationDomainsource
public string
Имя домена строки валидации, используемой при переводе ошибок валидации.
null $virtualFieldssource
public array
Массив виртуальных полей данной модели. Виртуальные поля — это алиасы выражений SQL. Поля, добавленные в этот свойство, будут читаться как другие поля в модели, но не будут сохраняемы.
public $virtualFields = array('two' => '1 + 1');
Это упрощённый пример того, как установить virtualFields
Ссылка
http://book.cakephp.org/2.0/ru/models/model-attributes.html#virtualfieldsarray()
© 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-CakeTestModel.html