Класс Таблица
Представляет собой отдельную базу данных.
Предоставляет методы для извлечения данных и управления ассоциациями с другими таблицами. Можно создавать несколько экземпляров этого класса для одной и той же таблицы базы данных с разными псевдонимами, что позволяет более богатым и выразительным образом обращаться к структуре базы данных.
Извлечение данных
Основной способ извлечения данных — использование Table::find(). Подробнее см. в этом методе.
Динамические поиск
В дополнение к стандартным методам поиска find($type), CakePHP предоставляет динамические методы поиска. Эти методы позволяют легко устанавливать основные условия. Например, для фильтрации пользователей по имени пользователя, необходимо вызвать
$query = $users->findByUsername('mark'); Также можно объединять условия по нескольким полям, используя Or или And:
$query = $users->findByUsernameOrEmail('mark', 'mark@example.org'); Массовые обновления/удаления
Для массовых обновлений/удалений можно использовать Table::updateAll() и Table::deleteAll(). Следует учитывать, что события не будут срабатывать при массовых обновлениях/удалениях.
Обработчики/события
Объекты Table предоставляют несколько обработчиков/событий, на которые можно подключиться для дополнения/замены операций поиска. Каждое событие использует стандартную систему событий CakePHP
beforeFind(Event $event, Query $query, ArrayObject $options, boolean $primary)Срабатывает перед каждой операцией поиска. Останавливая событие и возвращая значение, можно полностью обойти операцию поиска. Все изменения, внесенные в экземпляр $query, сохранятся на весь поиск. Параметр $primary указывает, является ли это основной запрос или ассоциированный запрос.buildValidator(Event $event, Validator $validator, string $name)Позволяет слушателям изменять правила валидации для предоставленного валидатора.buildRules(Event $event, RulesChecker $rules)Позволяет слушателям изменять проверку правил, добавляя дополнительные правила.beforeRules(Event $event, EntityInterface $entity, ArrayObject $options, string $operation)Срабатывает перед проверкой сущности с использованием правил. Останавливая это событие, можно вернуть конечное значение операции проверки правил.afterRules(Event $event, EntityInterface $entity, ArrayObject $options, bool $result, string $operation)Срабатывает после проверки правил сущности. Останавливая это событие, можно вернуть конечное значение операции проверки правил.beforeSave(Event $event, EntityInterface $entity, ArrayObject $options)Срабатывает перед сохранением каждой сущности. Остановка этого события приведет к прерыванию операции сохранения. Когда событие остановлено, результат события будет возвращен.afterSave(Event $event, EntityInterface $entity, ArrayObject $options)Срабатывает после сохранения сущности.afterSaveCommit(Event $event, EntityInterface $entity, ArrayObject $options)Срабатывает после завершения транзакции, в которую заключена операция сохранения. Также срабатывает для неатомарных сохранений, где операции базы данных неявно подтверждаются. Событие срабатывает только для основной таблицы, на которой непосредственно вызывается save(). Событие не срабатывает, если транзакция начата до вызова save.beforeDelete(Event $event, EntityInterface $entity, ArrayObject $options)Срабатывает перед удалением сущности. Остановкой этого события вы прервете операцию удаления.afterDelete(Event $event, EntityInterface $entity, ArrayObject $options)Срабатывает после удаления сущности.
- Cake\ORM\Table реализует Cake\Datasource\RepositoryInterface, Cake\Event\EventListenerInterface, Cake\Event\EventDispatcherInterface, Cake\Validation\ValidatorAwareInterface использует Cake\Event\EventDispatcherTrait , Cake\Datasource\RulesAwareTrait , Cake\Validation\ValidatorAwareTrait
См.: \Cake\Event\EventManager для справки по системе событий.
Расположение: ORM/Table.php
Резюме констант
-
stringBUILD_VALIDATOR_EVENT'Model.buildValidator' -
stringIS_UNIQUE_CLASSCake\ORM\IsUnique::class -
stringRULES_CLASSRulesChecker::class -
stringVALIDATOR_PROVIDER_NAME'table'
Унаследованные константы
Резюме свойств
-
$_aliasprotectedstringЧеловеческое имя, присваиваемое этому экземпляру. Можно создать несколько объектов, представляющих одну и ту же таблицу базы данных, используя разные псевдонимы.
- Контейнер ассоциаций для этой таблицы.
$_associationsprotected - BehaviorRegistry для этой таблицы
$_behaviorsprotected - Экземпляр соединения
$_connectionprotected -
$_displayFieldprotectedИмя поля, представляющего удобочитаемое представление строкиstring -
$_entityClassprotectedИмя класса, представляющего отдельную строку для этой таблицыstring -
$_primaryKeyprotectedИмя поля, представляющего первичный ключ в таблицеstring|array -
$_registryAliasprotectedКлюч реестра, используемый для создания этого объекта таблицыstring - Объект схемы, содержащий описание полей этой таблицы
$_schemaprotected -
$_tableprotectedИмя таблицы, как оно указано в базе данныхstring
Унаследованные свойства
Резюме методов
- __call() publicОбработка делегирования поведения + динамические поиск.
- __construct() publicИнициализация нового экземпляра
- __debugInfo() public
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
- __get() public
Возвращает ассоциацию с именем, соответствующим переданному значению, если она существует, в противном случае генерирует исключение.
- __isset() public
Возвращает, существует ли ассоциация с именем, соответствующим переданному значению, для этой таблицы.
- _dynamicFinder() protectedОбеспечивает динамические методы findBy и findByAll.
- _executeTransaction() protectedОбработка логики выполнения работника внутри транзакции.
- _getFindOrCreateQuery() protectedПолучение объекта запроса для findOrCreate().
- _initializeSchema() protected
Переопределите эту функцию, чтобы изменить схему, используемую этой таблицей. Эта функция вызывается только после извлечения схемы из базы данных. Если вы хотите предоставить собственную схему для этой таблицы, не затрагивая базу данных, вы можете переопределить schema() или ввести определения через этот метод.
- _insert() protectedВспомогательная функция для обработки вставки данных сущности в таблицу
- _newId() protectedГенерация значения первичного ключа для новой записи.
- _onSaveSuccess() protected
Обработка сохранения ассоциаций дочерних элементов и выполнение логики после сохранения после успешного сохранения сущности для этой таблицы.
- _processDelete() protectedВыполнение операции удаления.
- _processFindOrCreate() protectedВыполнение фактического поиска и/или создания сущности на основе переданных опций.
- _processSave() protectedВыполнение фактического сохранения сущности на основе переданных опций.
- _setFieldMatchers() protected
Из массива опций проверить, являются ли ключи, описанные в
$keys, массивами, и изменить значения для замыканий, которые будут конкатенировать каждое из свойств в массиве значений при передаче строки. - _transactionCommitted() protectedПроверяет, выполнил ли вызывающий объект выполнение подтверждения транзакции.
- _update() protectedВспомогательная функция для обработки обновления данных сущности в таблице
- addAssociations() publicНастройка нескольких ассоциаций.
- addBehavior() publicДобавить поведение.
- addBehaviors() publicДобавляет массив поведений в коллекцию поведений таблицы.
- Возвращает псевдоним таблицы или задаёт новый.
- aliasField() publicПсевдоним поля с текущим псевдонимом таблицы.
- Возвращает объект ассоциации, настроенный для указанного псевдонима, если таковой есть.
- associations() publicПолучить коллекцию ассоциаций для этой таблицы.
- behaviors() publicВозвращает реестр поведения для этой таблицы.
- belongsTo() public
Создаёт новую ассоциацию BelongsTo между этой таблицей и целевой таблицей. Ассоциация "belongs to" — это отношение N-1, где эта таблица является стороной N, и где для каждой записи в этой таблице существует одна связанная запись в целевой таблице.
- belongsToMany() public
Создаёт новую ассоциацию BelongsToMany между этой таблицей и целевой таблицей. Ассоциация "belongs to many" — это отношение М-N.
- buildRules() public
- callFinder() public
Вызывает метод поиска непосредственно и применяет его к переданному запросу; если запрос не передан, создаётся новый и возвращается.
- Возвращает экземпляр соединения или задаёт новый.
- Получить имя соединения по умолчанию.
- delete() publicУдалить одну сущность.
- deleteAll() publicУдаляет все записи, соответствующие предоставленным условиям.
- deleteOrFail() public
Попробовать удалить сущность или выбросить PersistenceFailedException, если сущность новая, не имеет значения первичного ключа, проверки правил приложения не удались или удаление было прервано обратным вызовом.
- Возвращает поле отображения или задаёт новое.
-
Возвращает класс, используемый для гидратации строк для этой таблицы, или устанавливает новый.
- exists() public
Возвращает true, если в этом хранилище есть какие-либо записи, соответствующие указанным условиям.
- find() public
Создаёт новый запрос для этого хранилища и применяет некоторые значения по умолчанию на основе типа выбранного поиска.
- findAll() publicВозвращает переданный запрос.
- findAssociation() protectedВозвращает объект ассоциации, настроенный для указанного псевдонима, если таковой есть.
- findList() public
Настраивает объект запроса, чтобы результаты отображались в виде индексированного массива, что полезно в тех местах, где вам нужен список, например, для заполнения выпадающих списков.
- findOrCreate() publicНаходит существующую запись или создаёт новую.
- findThreaded() public
Результаты для этого поиска будут вложенным массивом и подходят, если вы хотите использовать поле parent_id данных вашей модели для построения вложенных результатов.
- get() public
Возвращает одну запись после поиска по её первичному ключу; если запись не найдена, этот метод генерирует исключение.
- getAlias() publicВозвращает псевдоним таблицы.
- getAssociation() publicВозвращает объект ассоциации, настроенный для указанного псевдонима.
- getBehavior() publicПолучить поведение из реестра.
- getConnection() publicВозвращает экземпляр соединения.
- getDisplayField() publicВозвращает поле отображения.
- getEntityClass() publicВозвращает класс, используемый для гидратации строк для этой таблицы.
- getPrimaryKey() publicВозвращает имя поля первичного ключа.
- getRegistryAlias() publicВозвращает ключ реестра таблицы, используемый для создания этого экземпляра таблицы.
- getSaveOptionsBuilder() publicПолучает экземпляр SaveOptionsBuilder.
- getSchema() publicВозвращает объект схемы таблицы, описывающий свойства этой таблицы.
- getTable() publicВозвращает имя таблицы базы данных.
- hasAssociation() publicПроверяет, существует ли определённая ассоциация в данном экземпляре Table.
- hasBehavior() publicПроверяет, загружен ли обработчик с указанным псевдонимом.
- hasField() publicПроверяет наличие определённого поля/колонки в таблице.
- hasFinder() publicВозвращает true, если для таблицы существует поиск
- hasMany() public
Создаёт новую ассоциацию HasMany между этой таблицей и целевой таблицей. Ассоциация "has many" — это отношение 1-N.
- hasOne() public
Создаёт новую ассоциацию HasOne между этой таблицей и целевой таблицей. Ассоциация "has one" — это отношение 1-1.
- implementedEvents() publicПолучает обратные вызовы модели, в которых заинтересована эта таблица.
- initialize() publicИнициализирует экземпляр таблицы. Вызывается после конструктора.
- loadInto() public
Загружает указанные ассоциации в переданный объект или список объектов, выполняя дополнительные запросы в базе данных и объединяя результаты в соответствующие свойства.
- marshaller() publicПолучает объект, используемый для преобразования массива данных в объекты.
- newEntities() publicСоздаёт список объектов + связанных объектов из массива.
- newEntity() publicСоздаёт новый объект + связанные объекты из массива.
- patchEntities() public
Объединяет каждый из переданных элементов
$dataв объекты, найденные в$entities, учитывая настроенные доступные поля объектов. Объединение выполняется путём сопоставления первичного ключа в каждом из элементов$dataи$entities. - patchEntity() public
Объединяет переданный
$dataв$entity, учитывая настроенные доступные поля объекта. Возвращает тот же объект после изменения. - Возвращает имя поля первичного ключа или устанавливает новое.
- query() publicСоздаёт новый экземпляр Query для таблицы.
- Возвращает ключ реестра таблицы, используемый для создания экземпляра этой таблицы, или задаёт его.
- removeBehavior() publicУдаляет обработчик из реестра обработчиков этой таблицы.
- save() public
Сохраняет объект на основе полей, помеченных как изменённые, и возвращает тот же объект после успешного сохранения или false в случае ошибки.
- saveMany() publicСохраняет несколько объектов таблицы.
- saveOrFail() public
Попытаться сохранить сущность или выбросить PersistenceFailedException, если проверки правил приложения не прошли, сущность содержит ошибки или сохранение было прервано обратным вызовом.
- Возвращает объект схемы таблицы, описывающий свойства этой таблицы.
- setAlias() publicУстанавливает псевдоним таблицы.
- setConnection() publicУстанавливает экземпляр подключения.
- setDisplayField() publicУстанавливает поле отображения.
- setEntityClass() publicУстанавливает класс, используемый для гидратации строк для этой таблицы.
- setPrimaryKey() publicУстанавливает имя поля первичного ключа.
- setRegistryAlias() publicУстанавливает ключ реестра таблицы, используемый для создания экземпляра этой таблицы.
- setSchema() publicУстанавливает объект схемы таблицы, описывающий свойства этой таблицы.
- setTable() publicУстанавливает имя таблицы базы данных.
- Возвращает имя таблицы базы данных или задаёт новое.
- updateAll() publicОбновляет все соответствующие записи.
- validateUnique() public
Метод валидации, используемый для проверки уникальности значения для столбца. Он предназначен для использования с API валидации, а не для прямого вызова.
- validationMethodExists() protected
Подробное описание методов
__call()source public
__call( string $method , array $args )
Обработка делегирования обработчиков + динамических поисковиков.
Если ваша таблица использует какие-либо обработчики, вы можете вызвать их так, как будто они находятся в объекте таблицы.
Параметры
- строка
$method - Имя вызываемого метода
- массив
$args - Список аргументов, передаваемых в функцию
Возвращает
смешанныйИсключения
BadMethodCallException__construct()source public
__construct( array $config = [] )
Инициализирует новый экземпляр
Массив $config понимает следующие ключи:
- table: Имя таблицы базы данных для представления
- alias: Псевдоним, который должен быть присвоен этой таблице (по умолчанию имя таблицы)
- connection: Экземпляр подключения, который необходимо использовать
- entityClass: Полное имя класса сущности, которое будет представлять строки в этой таблице.
- schema: Объект \Cake\Database\Schema\TableSchema или массив, который можно передать в него.
- eventManager: Экземпляр менеджера событий, который необходимо использовать для внутренних событий
- behaviors: BehaviorRegistry. Как правило, не используется за пределами тестов.
- associations: Экземпляр AssociationCollection.
- validator: Экземпляр Validator, который назначается в качестве набора валидации "default", или ассоциативный массив, где ключ — имя набора валидации, а значение — экземпляр Validator.
Параметры
- массив
$configнеобязательно [] - Список параметров для этой таблицы
__debugInfo()source public
__debugInfo( )
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
массив__get()source public
__get( string $property )
Возвращает ассоциацию с именем, указанным в переданном значении, если она существует, в противном случае генерирует исключение.
Параметры
- строка
$property - имя ассоциации
Возвращает
Cake\ORM\AssociationИсключения
RuntimeExceptionесли ассоциация с таким именем не существует
__isset()source public
__isset( string $property )
Возвращает, существует ли ассоциация с именем, указанным в переданном значении, для этой таблицы.
Параметры
- строка
$property - имя ассоциации
Возвращает
логическое значение_dynamicFinder()source protected
_dynamicFinder( string $method , array $args )
Обеспечивает динамические методы findBy и findByAll.
Параметры
- строка
$method - Имя метода, который был вызван.
- массив
$args - Список аргументов, переданных функции.
Возвращает
mixedВызывает
BadMethodCallExceptionв случае отсутствия аргументов или когда знаки &, & или | используются совместно.
_executeTransaction()source protected
_executeTransaction( callable $worker , boolean $atomic = true )
Обрабатывает логику выполнения задачи внутри транзакции.
Параметры
- вызываемый
$worker - Задача, которая будет выполнена внутри транзакции.
- логическое
$atomicнеобязательно true - Выполнять ли задачу внутри базы данных транзакции.
Возвращает
mixed_getFindOrCreateQuery()source protected
_getFindOrCreateQuery( array|callable|Cake\ORM\Query $search )
Получает объект запроса для findOrCreate().
Параметры
- массив|вызываемый|
Cake\ORM\Query$search - Критерии для поиска существующих записей.
Возвращает
Cake\ORM\Query_initializeSchema()source protected
_initializeSchema( Cake\Database\Schema\TableSchema $schema )
Переопределите эту функцию, чтобы изменить схему, используемую этой таблицей. Эта функция вызывается только после извлечения схемы из базы данных. Если вы хотите предоставить собственную схему для этой таблицы без изменения базы данных, вы можете переопределить schema() или ввести определения через этот метод.
Пример:
protected function _initializeSchema(\Cake\Database\Schema\TableSchema $schema) {
$schema->setColumnType('preferences', 'json');
return $schema;
} Параметры
-
Cake\Database\Schema\TableSchema$schema - Определение таблицы, полученное из базы данных.
Возвращает
Cake\Database\Schema\TableSchemaизменённая схема
_insert()source protected
_insert( Cake\Datasource\EntityInterface $entity , array $data )
Вспомогательная функция для обработки вставки данных сущности в таблицу
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность, из которой были извлечены данные $data
- массив
$data - Фактические данные, которые необходимо сохранить
Возвращает
Cake\Datasource\EntityInterface|логическоеВызывает
RuntimeExceptionесли не все первичные ключи были указаны или могут быть сгенерированы, когда таблица имеет составные первичные ключи. Или если таблица не имеет первичного ключа.
_newId()source protected
_newId( array $primary )
Генерирует значение первичного ключа для новой записи.
По умолчанию, это использует систему типов для генерации нового значения первичного ключа, если это возможно. Вы можете переопределить этот метод, если у вас есть особые требования для генерации идентификаторов.
Примечание: ORM не будет генерировать значения первичного ключа для составных первичных ключей. Вы можете переопределить _newId() в вашем классе таблицы.
Параметры
- массив
$primary - Столбцы первичного ключа, для которых нужно получить новый идентификатор.
Возвращает
null|строка|массивЛибо null, либо значение первичного ключа, либо список значений первичных ключей.
_onSaveSuccess()source protected
_onSaveSuccess( Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Обрабатывает сохранение дочерних ассоциаций и выполнение логики afterSave, как только сущность для этой таблицы будет успешно сохранена.
Параметры
-
Cake\Datasource\EntityInterface$entity - сохраняемая сущность
- ArrayObject
$options - опции для операции сохранения
Возвращает
логическоеTrue при успехе
Вызывает
Cake\ORM\Exception\RolledbackTransactionExceptionЕсли транзакция прервана в событии afterSave.
_processDelete()source protected
_processDelete( Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Выполнение операции удаления.
Удалить предоставленную сущность. Удалить строки из любых зависимых ассоциаций и очистить таблицы соединения для ассоциаций BelongsToMany.
Параметры
-
Cake\Datasource\EntityInterface$entity - Удаляемая сущность.
- ArrayObject
$options - Опции для удаления.
Возвращает
логическоеуспех
Вызывает
InvalidArgumentExceptionесли нет значений первичного ключа у переданной сущности
_processFindOrCreate()source protected
_processFindOrCreate( array|callable|Cake\ORM\Query $search , callable $callback = null , array $options = [] )
Выполняет фактический поиск и/или создание сущности на основе переданных опций.
Параметры
- массив|вызываемый|
Cake\ORM\Query$search Критерии поиска существующей записи или вызываемый объект, который настроит запрос поиска.
- вызываемый
$callbackнеобязательно null Обратный вызов, который будет вызван для вновь созданных сущностей. Этот обратный вызов будет вызван перед сохранением сущности.
- массив
$optionsнеобязательно [] - Опции, используемые при сохранении.
Возвращает
Cake\Datasource\EntityInterfaceСущность.
Вызывает
Cake\ORM\Exception\PersistenceFailedExceptionКогда сущность не может быть сохранена
_processSave()source protected
_processSave( Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Выполняет фактическое сохранение сущности на основе переданных опций.
Параметры
-
Cake\Datasource\EntityInterface$entity - сохраняемая сущность
- ArrayObject
$options - опции для операции сохранения
Возвращает
Cake\Datasource\EntityInterface|логическоеВызывает
RuntimeExceptionЕсли сущность отсутствуют некоторые первичные ключи.
Cake\ORM\Exception\RolledbackTransactionExceptionЕсли транзакция прервана в событии afterSave.
_setFieldMatchers()source protected
_setFieldMatchers( array $options , array $keys )
Из массива опций проверяет, являются ли ключи, описанные в $keys, массивами, и изменяет значения на замыкания, которые будут конкатенировать каждую из свойств в массиве значений при передаче строки.
Это вспомогательная функция, используемая для форматировщиков результатов, которые могут принимать составные ключи при сравнении значений.
Параметры
- массив
$options - Исходные опции, переданные в поиск.
- массив
$keys Ключи для проверки в $options для создания соответствий из связанного значения
Возвращает
массив_transactionCommitted()source protected
_transactionCommitted( boolean $atomic , boolean $primary )
Проверяет, выполнил ли вызывающий метод commit транзакции.
Параметры
- логическое
$atomic - True, если использовалась атомарная транзакция.
- логическое
$primary - True, если использовался первичный ключ.
Возвращает
логическоеВозвращает true, если транзакция была завершена.
_update()source protected
_update( Cake\Datasource\EntityInterface $entity , array $data )
Вспомогательная функция для обработки обновления данных сущности в таблице
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность, из которой были извлечены данные $data
- массив
$data - Фактические данные, которые необходимо сохранить
Возвращает
Cake\Datasource\EntityInterface|логическоеВызывает
InvalidArgumentExceptionПри отсутствии данных первичного ключа.
addAssociations()source public
addAssociations( array $params )
Настройка нескольких ассоциаций.
В качестве аргумента принимается массив, содержащий набор имён таблиц, индексированных типом ассоциации:
$this->Posts->addAssociations([
'belongsTo' => [
'Users' => ['className' => 'App\Model\Table\UsersTable']
],
'hasMany' => ['Comments'],
'belongsToMany' => ['Tags']
]); Каждый тип ассоциации принимает несколько ассоциаций, где ключи — псевдонимы, а значения — данные конфигурации ассоциации. Если используются числовые ключи, значения будут обрабатываться как псевдонимы ассоциаций.
Параметры
- массив
$params - Набор ассоциаций для привязки (индексированные типом ассоциации)
Возвращает
$this
См. также
\Cake\ORM\Table::belongsTo()\Cake\ORM\Table::hasOne()
\Cake\ORM\Table::hasMany()
\Cake\ORM\Table::belongsToMany()
addBehavior()source public
addBehavior( string $name , array $options = [] )
Добавить поведение.
Добавляет поведение в коллекцию поведений данной таблицы. Поведения предоставляют лёгкий способ создания горизонтально многократно используемых функций, которые могут предоставлять функциональность по типу трайтов, и позволяют прослушивать события.
Пример:
Загрузка поведения с некоторыми настройками.
$this->addBehavior('Tree', ['parent' => 'parentId']); Поведения обычно загружаются во время Table::initialize().
Параметры
- строка
$name - Имя поведения. Может быть коротким именем класса.
- массив
$optionsнеобязательно [] - Опции для использования поведения.
Возвращает
$this
Выбрасывает
RuntimeExceptionЕсли поведение перегружается.
См. также
Cake\ORM\BehavioraddBehaviors()source public
addBehaviors( array $behaviors )
Добавляет массив поведений в коллекцию поведений таблицы.
Пример:
$this->addBehaviors([
'Timestamp',
'Tree' => ['level' => 'level'],
]); Параметры
- массив
$behaviors - Все загружаемые поведения.
Возвращает
$this
Выбрасывает
RuntimeExceptionЕсли поведение перегружается.
alias()source public deprecated
alias( string|null $alias = null )
Возвращает псевдоним таблицы или устанавливает новый
Устаревшее
3.4.0 Используйте setAlias()/getAlias() вместо этого.Параметры
- строка|null
$aliasнеобязательно null - новый псевдоним таблицы
Возвращает
строкаРеализация
Cake\Datasource\RepositoryInterface::alias() aliasField()source public
aliasField( string $field )
Назначает псевдоним полю с текущим псевдонимом таблицы.
Если поле уже имеет псевдоним, это приведет к бездействию.
Параметры
- строка
$field - Поле для назначения псевдонима.
Возвращает
строкаПрефикс поля с псевдонимом таблицы.
association()source public deprecated
association( string $name )
Возвращает объект ассоциации, сконфигурированный для указанного псевдонима, если таковой имеется.
Устаревшее
3.6.0 Используйте getAssociation() и Table::hasAssociation() вместо этого.Параметры
- строка
$name - Псевдоним, используемый для ассоциации.
Возвращает
Cake\ORM\Association|nullАссоциация или null.
associations()source public
associations( )
Получить коллекцию ассоциаций для этой таблицы.
Возвращает
Cake\ORM\AssociationCollection|Cake\ORM\Association[]Коллекция объектов ассоциации.
behaviors()source public
behaviors( )
Возвращает реестр поведений для этой таблицы.
Возвращает
Cake\ORM\BehaviorRegistryЭкземпляр BehaviorRegistry.
belongsTo()source public
belongsTo( string $associated , array $options = [] )
Создаёт новую ассоциацию BelongsTo между этой таблицей и целевой таблицей. Ассоциация "belongs to" представляет собой отношение N-1, где данная таблица является стороной N, а для каждой записи в этой таблице существует одна связанная запись в целевой таблице.
Целевая таблица может быть определена по её имени, которое передаётся в первом аргументе, или можно передать имя класса, подлежащего созданию, или непосредственно экземпляр.
Массив options принимает следующие ключи:
- className: Имя класса объекта целевой таблицы
- targetTable: Экземпляр объекта таблицы, используемого в качестве целевой таблицы
- foreignKey: Имя поля, используемого в качестве внешнего ключа, если false, оно не будет использоваться
- conditions: массив с условиями фильтрации соединения
- joinType: Тип соединения (например, INNER)
- strategy: Стратегия загрузки. Поддерживаются 'join' и 'select'.
- finder: Метод нахождения, используемый при загрузке записей из этой ассоциации. По умолчанию 'all'. При стратегии 'join' будут использованы только поля, включения и условия where из нахождения.
Этот метод возвращает созданный объект ассоциации.
Параметры
- строка
$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- массив
$optionsнеобязательно [] - Список опций для конфигурации определения ассоциации
Возвращает
Cake\ORM\Association\BelongsTobelongsToMany()source public
belongsToMany( string $associated , array $options = [] )
Создаёт новую ассоциацию BelongsToMany между этой таблицей и целевой таблицей. Ассоциация "belongs to many" представляет собой отношение М-Н.
Целевая таблица может быть определена по её имени, которое передаётся в первом аргументе, или можно передать имя класса, подлежащего созданию, или непосредственно экземпляр.
Массив options принимает следующие ключи:
- className: Имя класса объекта целевой таблицы.
- targetTable: Экземпляр объекта таблицы, используемого в качестве целевой таблицы.
- foreignKey: Имя поля, используемого в качестве внешнего ключа.
- targetForeignKey: Имя поля, используемого в качестве внешнего ключа для целевой таблицы.
- joinTable: Имя таблицы, представляющей связь между двумя таблицами
- through: Если вы выбираете использовать уже созданную таблицу связи, установите этот ключ в сконфигурированный экземпляр Table, содержащий ассоциации как с исходной, так и с целевой таблицами в этой ассоциации.
- dependent: Устанавливается в false, если при удалении записи-владельца не требуется удаление записей таблицы соединения.
- cascadeCallbacks: Устанавливается в true, если вы хотите, чтобы CakePHP вызывал обратные вызовы при каскадных удалениях. Если false, ORM будет использовать deleteAll(). Когда true, записи таблицы соединения будут загружены и затем удалены.
- conditions: массив с условиями фильтрации соединения
- sort: Порядок, в котором должны возвращаться результаты для этой ассоциации.
- strategy: Стратегия для выбора результатов. Поддерживаются 'select' и 'subquery'. Если subquery выбран, запрос, используемый для возврата результатов в исходной таблице, будет использоваться в качестве условий для получения строк в целевой таблице.
- saveStrategy: Либо 'append', либо 'replace'. Указывает режим, используемый для сохранения связанных сущностей. Первый будет создавать только новые связи между обеими сторонами отношения, а второй выполнит очистку и замену, чтобы создать связи между переданными сущностями при сохранении.
- strategy: Стратегия загрузки. Поддерживаются 'select' и 'subquery'.
- finder: Метод нахождения, используемый при загрузке записей из этой ассоциации. По умолчанию 'all'.
Этот метод возвращает созданный объект ассоциации.
Параметры
- строка
$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- массив
$optionsнеобязательно [] - Список опций для конфигурации определения ассоциации
Возвращает
Cake\ORM\Association\BelongsToManybuildRules()source public
buildRules( Cake\ORM\RulesChecker $rules )
Параметры
-
Cake\ORM\RulesChecker$rules - Объект правил, подлежащий изменению.
Возвращает
Cake\ORM\RulesCheckercallFinder()source public
callFinder( string $type , Cake\ORM\Query $query , array $options = [] )
Вызывает метод нахождения непосредственно и применяет его к переданному запросу. Если запрос не передан, будет создан и возвращён новый.
Параметры
- строка
$type - Имя вызываемого нахождения
-
Cake\ORM\Query$query - Объект запроса, к которому применяются параметры нахождения
- массив
$optionsнеобязательно [] - Список опций для передачи в нахождение
Возвращает
Cake\ORM\QueryВыбрасывает
BadMethodCallExceptionconnection()source public deprecated
connection( Cake\Datasource\ConnectionInterface $connection = null )
Возвращает экземпляр соединения или устанавливает новый
Устаревшее
3.4.0 Используйте setConnection()/getConnection() вместо этого.Параметры
-
Cake\Datasource\ConnectionInterface$connectionнеобязательно null - Новый экземпляр соединения
Возвращает
Cake\Datasource\ConnectionInterfacedefaultConnectionName()source public static
defaultConnectionName( )
Получить имя подключения по умолчанию.
Этот метод используется для получения имени подключения по умолчанию, если экземпляр создается через TableLocator без указания подключения.
Возвращает
stringСм. также
\Cake\ORM\Locator\TableLocator::get()delete()source public
delete( Cake\Datasource\EntityInterface $entity , array|ArrayAccess $options = [] )
Удалить сущность.
Для ассоциаций HasMany и HasOne записи будут удалены в соответствии с опцией dependent. Записи в таблицах связи BelongsToMany всегда будут удалены. Вы можете использовать опцию cascadeCallbacks при определении ассоциаций, чтобы изменить способ удаления связанных данных.
Параметры
-
atomicПо умолчанию true. При значении true, удаление происходит внутри транзакции. -
checkRulesПо умолчанию true. Проверка правил удаления перед удалением записи.
События
-
Model.beforeDeleteСрабатывает перед удалением. Если остановлено, удаление будет прервано. Получает событие, сущность и параметры. -
Model.afterDeleteСрабатывает после успешного удаления. Получает событие, сущность и параметры. -
Model.afterDeleteCommitСрабатывает после завершения транзакции при атомарном удалении. Получает событие, сущность и параметры.
Аргумент options будет преобразован в экземпляр \ArrayObject на время выполнения обратных вызовов, что позволяет слушателям изменять параметры, используемые в операции удаления.
Параметры
-
Cake\Datasource\EntityInterface$entity - Удаляемая сущность.
- array|ArrayAccess
$optionsнеобязательно [] - Параметры для удаления.
Возвращает
booleanуспех
Реализация
Cake\Datasource\RepositoryInterface::delete() deleteAll()source public
deleteAll( mixed $conditions )
Удаляет все записи, соответствующие заданным условиям.
Параметры
- mixed
$conditions Условия, принимаются как Query::where().
Возвращает
integerКоличество затронутых строк.
Реализация
Cake\Datasource\RepositoryInterface::deleteAll() deleteOrFail()source public
deleteOrFail( Cake\Datasource\EntityInterface $entity , array|ArrayAccess $options = [] )
Попытка удалить сущность или выброс PersistenceFailedException, если сущность новая, не имеет значения первичного ключа, правила приложения не выполнены или удаление было прервано обратным вызовом.
Параметры
-
Cake\Datasource\EntityInterface$entity - Удаляемая сущность.
- array|ArrayAccess
$optionsнеобязательно [] - Параметры для удаления.
Возвращает
booleanуспех
Исключения
Cake\ORM\Exception\PersistenceFailedExceptionСм. также
\Cake\ORM\Table::delete()displayField()source public deprecated
displayField( string|null $key = null )
Возвращает или задает поле отображения
Устарело
3.4.0 Используйте setDisplayField()/getDisplayField() вместо этого.Параметры
- string|null
$keyнеобязательно null - Устанавливает новое имя для поля отображения
Возвращает
stringentityClass()source public deprecated
entityClass( string|null $name = null )
Возвращает или устанавливает класс для гидратации строк этой таблицы
Устарело
3.4.0 Используйте setEntityClass()/getEntityClass() вместо этого.Параметры
- string|null
$nameнеобязательно null - Имя класса
Возвращает
stringИсключения
Cake\ORM\Exception\MissingEntityExceptionпри невозможности найти класс сущности
exists()source public
exists( array|ArrayAccess $conditions )
Возвращает true, если в этом репозитории есть запись, соответствующая заданным условиям.
Параметры
- array|ArrayAccess
$conditions - Список условий для запроса
Возвращает
booleanРеализация
Cake\Datasource\RepositoryInterface::exists() find()source public
find( string $type = 'all' , array|ArrayAccess $options = [] )
Создает новый запрос для этого репозитория и применяет некоторые значения по умолчанию, основанные на типе поиска.
Событие Model.beforeFind
Каждый find() запускает событие Model.beforeFind для всех подключенных слушателей. Любой слушатель может установить допустимый набор результатов, используя $query
По умолчанию, $options распознает следующие ключи:
- fields
- conditions
- order
- limit
- offset
- page
- group
- having
- contain
- join
Использование
Использование массива options:
$query = $articles->find('all', [
'conditions' => ['published' => 1],
'limit' => 10,
'contain' => ['Users', 'Comments']
]); Использование интерфейса билдера:
$query = $articles->find() ->where(['published' => 1]) ->limit(10) ->contain(['Users', 'Comments']);
Вызов находок
Метод find() — точка входа для пользовательских методов поиска. Вы можете вызвать поиск, указав тип:
$query = $articles->find('published'); Вызовет метод findPublished.
Параметры
- string
$typeнеобязательно 'all' - Тип запроса
- array|ArrayAccess
$optionsнеобязательно [] - Массив, который будет передан в Query::applyOptions()
Возвращает
Cake\ORM\QueryБилдер запроса
Реализация
Cake\Datasource\RepositoryInterface::find() findAll()source public
findAll( Cake\ORM\Query $query , array $options )
Возвращает запрос как есть.
По умолчанию findAll() не применяет условий, вы можете переопределить этот метод в подклассах для изменения того, как работает find('all').
Параметры
-
Cake\ORM\Query$query - Запрос для поиска
- array
$options - Параметры для поиска
Возвращает
Cake\ORM\QueryБилдер запроса
findAssociation()source protected
findAssociation( string $name )
Возвращает объект ассоциации, сконфигурированный для указанного псевдонима, если таковой имеется.
Аргумент name также поддерживает синтаксис точки для доступа к более глубоким ассоциациям.
$users = $this->getAssociation('Articles.Comments.Users'); Параметры
- string
$name - Псевдоним ассоциации.
Возвращает
Cake\ORM\Association|nullАссоциация или null.
findList()source public
findList( Cake\ORM\Query $query , array $options )
Настраивает объект запроса, чтобы результаты отображались как индексированный массив, полезно для случаев, когда вам нужен список, например, для заполнения полей выбора.
При вызове этого поиска поля, переданные в качестве параметров, используются для определения того, что будет использоваться в качестве ключа массива, значения и, необязательно, для группировки результатов. По умолчанию используется первичный ключ модели для ключа и поле отображения для значения.
Результаты этого поиска будут иметь следующий формат:
[ 1 => 'value for id 1', 2 => 'value for id 2', 4 => 'value for id 4' ]
Вы можете указать, какое свойство будет использоваться в качестве ключа, а какое — в качестве значения, используя массив $options, если не указано, будут использоваться результаты вызова primaryKey и displayField соответственно в этой таблице:
$table->find('list', [
'keyField' => 'name',
'valueField' => 'age'
]); Результаты могут быть объединены в более крупные группы, если они имеют общее свойство. Вы можете настроить свойство для группировки, задав groupField:
$table->find('list', [
'groupField' => 'category_id',
]); При использовании groupField результаты будут возвращены в этом формате:
[
'group_1' => [
1 => 'value for id 1',
2 => 'value for id 2',
]
'group_2' => [
4 => 'value for id 4'
]
] Параметры
-
Cake\ORM\Query$query - Запрос для поиска
- array
$options - Параметры для поиска
Возвращает
Cake\ORM\QueryБилдер запроса
findOrCreate()source public
findOrCreate( array|callable|Cake\ORM\Query $search , callable $callback = null , array $options = [] )
Находит существующую запись или создаёт новую.
Будет выполнено find(), чтобы найти существующую запись, используя атрибуты, определённые в $search. Если найдено несколько записей, будет возвращена первая.
Если запись не найдена, будет создана новая сущность с свойствами $search. Если предоставлена функция обратного вызова, она будет вызвана, позволяя определить дополнительные значения по умолчанию. Новая сущность будет сохранена и возвращена.
Если ваши условия поиска требуют пользовательского упорядочивания, ассоциаций или условий, то параметр $search может быть вызываемой функцией, которая принимает запрос Query в качестве аргумента, или объектом \Cake\ORM\Query, переданным в качестве параметра $search. Это позволяет настроить результаты поиска.
Параметры
Массив options передаётся методу save, за исключением следующих ключей:
- atomic: Выполнять ли методы find, save и обратные вызовы внутри транзакции базы данных (по умолчанию: true)
- defaults: Использовать ли критерии поиска в качестве значений по умолчанию для новой сущности (по умолчанию: true)
Параметры
- array|callable|
Cake\ORM\Query$search Критерии поиска существующих записей. Обратите внимание, что при передаче объекта запроса вам нужно будет использовать второй аргумент метода для изменения данных сущности перед сохранением.
- callable
$callbackнеобязательно null Функция обратного вызова, которая будет вызвана для вновь созданных сущностей. Эта функция будет вызвана *перед* сохранением сущности.
- array
$optionsнеобязательно [] - Параметры для сохранения.
Возвращает
Cake\Datasource\EntityInterfaceСущность.
Исключения
Cake\ORM\Exception\PersistenceFailedExceptionЕсли сущность не смогла быть сохранена
findThreaded()source public
findThreaded( Cake\ORM\Query $query , array $options )
Результаты этого нахождения будут вложенным массивом и подходят, если вы хотите использовать поле parent_id данных вашей модели для построения вложенных результатов.
Значения, относящиеся к родительскому ряду на основе значения parent_id, будут рекурсивно вложены внутри значений родительского ряда с использованием свойства children
Вы можете настроить поля, используемые для вложения результатов; по умолчанию используются первичный ключ и поля parent_id. Если вы хотите изменить эти значения по умолчанию, вам необходимо предоставить ключи keyField, parentField или nestingKey в $options:
$table->find('threaded', [
'keyField' => 'id',
'parentField' => 'ancestor_id'
'nestingKey' => 'children'
]); Параметры
-
Cake\ORM\Query$query - Запрос для поиска
- array
$options - Параметры поиска
Возвращает
Cake\ORM\QueryПостроитель запросов
get()source public
get( mixed $primaryKey , array|ArrayAccess $options = [] )
Возвращает одну запись после поиска по первичному ключу; если запись не найдена, этот метод генерирует исключение.
Использование
Получение статьи и некоторых взаимосвязей:
$article = $articles->get(1, ['contain' => ['Users', 'Comments']]);
Параметры
- mixed
$primaryKey - Значение первичного ключа для поиска
- array|ArrayAccess
$optionsнеобязательно [] - Параметры, принимаемые
Table::find()
Возвращает
Cake\Datasource\EntityInterfaceИсключения
Cake\Datasource\Exception\InvalidPrimaryKeyExceptionКогда у $primaryKey неверное количество элементов.
Реализация
Cake\Datasource\RepositoryInterface::get() getAssociation()source public
getAssociation( string $name )
Возвращает объект ассоциации, настроенный для указанного псевдонима.
Аргумент name также поддерживает точечную нотацию для доступа к более глубоким ассоциациям.
$users = $this->getAssociation('Articles.Comments.Users'); Обратите внимание, что этот метод требует наличия ассоциации, в противном случае генерирует исключение. Если вы не уверены, используйте hasAssociation() перед вызовом этого метода.
Параметры
- string
$name - Псевдоним, используемый для ассоциации.
Возвращает
Cake\ORM\AssociationАссоциация.
Исключения
InvalidArgumentExceptiongetBehavior()source public
getBehavior( string $name )
Получение поведения из реестра.
Параметры
- string
$name - Псевдоним поведения для получения из реестра.
Возвращает
Cake\ORM\BehaviorИсключения
InvalidArgumentExceptionЕсли поведение не существует.
getConnection()source public
getConnection( )
Возвращает экземпляр подключения.
Возвращает
Cake\Database\ConnectiongetEntityClass()source public
getEntityClass( )
Возвращает класс, используемый для гидратации строк для этой таблицы.
Возвращает
stringgetPrimaryKey()source public
getPrimaryKey( )
Возвращает имя поля первичного ключа.
Возвращает
string|arraygetRegistryAlias()source public
getRegistryAlias( )
Возвращает ключ реестра таблицы, используемый для создания экземпляра этой таблицы.
Возвращает
stringgetSaveOptionsBuilder()source public
getSaveOptionsBuilder( array $options = [] )
Получает экземпляр SaveOptionsBuilder.
Параметры
- array
$optionsнеобязательно [] - Параметры для анализа создателем.
Возвращает
Cake\ORM\SaveOptionsBuildergetSchema()source public
getSchema( )
Возвращает объект схемы таблицы, описывающий свойства этой таблицы.
Возвращает
Cake\Database\Schema\TableSchemagetTable()source public
getTable( )
Возвращает имя таблицы базы данных.
Это может включать имя схемы базы данных, если она установлена с помощью setTable()
Возвращает
stringhasAssociation()source public
hasAssociation( string $name )
Проверяет, существует ли указанная ассоциация в экземпляре этой таблицы.
Аргумент name также поддерживает точечную нотацию для доступа к более глубоким ассоциациям.
$hasUsers = $this->hasAssociation('Articles.Comments.Users'); Параметры
- string
$name - Псевдоним, используемый для ассоциации.
Возвращает
booleanhasBehavior()source public
hasBehavior( string $name )
Проверка наличия поведения с заданным псевдонимом.
Параметры
- string
$name - Псевдоним поведения для проверки.
Возвращает
booleanСуществует ли поведение.
hasField()source public
hasField( string $field )
Проверка наличия поля/колонки в таблице.
Делегирует задачу объекту схемы и проверяет наличие столбца с помощью экземпляра Schema\Table.
Параметры
- string
$field - Поле для проверки.
Возвращает
booleanTrue, если поле существует, false — если нет.
Реализация
Cake\Datasource\RepositoryInterface::hasField() hasFinder()source public
hasFinder( string $type )
Возвращает true, если для таблицы существует поиск
Параметры
- строка
$type - имя поиска для проверки
Возвращает
булево значениеhasMany()source public
hasMany( string $associated , array $options = [] )
Создаёт новую ассоциацию HasMany между этой таблицей и целевой таблицей. Ассоциация "has many" представляет 1-N отношение.
Целевая таблица может быть определена по её имени, указанному в первом аргументе, или вы можете передать имя класса для создания экземпляра, либо непосредственно экземпляр.
Массив опций может принимать следующие ключи:
- className: Имя класса объекта целевой таблицы
- targetTable: Экземпляр объекта таблицы, используемый в качестве целевой таблицы
- foreignKey: Название поля, используемого в качестве внешнего ключа, если false, то внешний ключ не используется
- dependent: Устанавливается в true, если вы хотите, чтобы CakePHP каскадно удалял записи в связанной таблице при удалении записи в этой таблице. Операция удаления в связанной таблице не будет каскадно распространяться дальше. Чтобы получить рекурсивную каскадную операцию, включите также
cascadeCallbacks. Устанавливается в false, если вы не хотите, чтобы CakePHP удалял связанные данные, или если вы используете ограничения базы данных. - cascadeCallbacks: Устанавливается в true, если вы хотите, чтобы CakePHP вызывал обратные вызовы при каскадном удалении. Если false, ORM будет использовать deleteAll() для удаления данных. Когда true, записи будут загружены, а затем удалены.
- conditions: массив с перечнем условий для фильтрации соединения
- sort: Порядок, в котором должны возвращаться результаты для этой ассоциации
- saveStrategy: Либо 'append', либо 'replace'. При 'append' текущие записи добавляются к любым записям в базе данных. При 'replace' связанные записи, отсутствующие в текущем наборе, будут удалены. Если внешний ключ является полем с возможностью null или если
dependentявляется true, записи будут орфанными. - strategy: Стратегия, используемая для выбора результатов. Доступны 'select' и 'subquery'. Если выбрана стратегия subquery, запросы, используемые для возвращения результатов в исходной таблице, будут использоваться как условия для получения строк в целевой таблице.
- finder: Метод поиска, используемый при загрузке записей из этой ассоциации. По умолчанию 'all'.
Этот метод вернёт объект ассоциации, который был создан.
Параметры
- строка
$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- массив
$optionsнеобязательно [] - список опций для настройки определения ассоциации
Возвращает
Cake\ORM\Association\HasManyhasOne()source public
hasOne( string $associated , array $options = [] )
Создаёт новую ассоциацию HasOne между этой таблицей и целевой таблицей. Ассоциация "has one" представляет 1-1 отношение.
Целевая таблица может быть определена по её имени, указанному в первом аргументе, или вы можете передать имя класса для создания экземпляра, либо непосредственно экземпляр.
Массив опций может принимать следующие ключи:
- className: Имя класса объекта целевой таблицы
- targetTable: Экземпляр объекта таблицы, используемый в качестве целевой таблицы
- foreignKey: Название поля, используемого в качестве внешнего ключа, если false, то внешний ключ не используется
- dependent: Устанавливается в true, если вы хотите, чтобы CakePHP каскадно удалял записи в связанной таблице при удалении записи в этой таблице. Операция удаления в связанной таблице не будет каскадно распространяться дальше. Чтобы получить рекурсивную каскадную операцию, включите также
cascadeCallbacks. Устанавливается в false, если вы не хотите, чтобы CakePHP удалял связанные данные, или если вы используете ограничения базы данных. - cascadeCallbacks: Устанавливается в true, если вы хотите, чтобы CakePHP вызывал обратные вызовы при каскадном удалении. Если false, ORM будет использовать deleteAll() для удаления данных. Когда true, записи будут загружены, а затем удалены.
- conditions: массив с перечнем условий для фильтрации соединения
- joinType: Тип соединения (например, LEFT)
- strategy: Стратегия загрузки. Поддерживаются 'join' и 'select'.
- finder: Метод поиска, используемый при загрузке записей из этой ассоциации. По умолчанию 'all'. Когда стратегия 'join', будут использованы только поля, включения и условия where из findera.
Этот метод вернёт объект ассоциации, который был создан.
Параметры
- строка
$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- массив
$optionsнеобязательно [] - список опций для настройки определения ассоциации
Возвращает
Cake\ORM\Association\HasOneimplementedEvents()source public
implementedEvents( )
Получить модели обратных вызовов, которые интересуют эту таблицу.
Реализация стандартных методов предполагает, что класс таблицы заинтересован в соответствующем событии.
Переопределите этот метод, если вам нужно добавить обработчики событий, отличные от стандартных. Или если вы хотите, чтобы ваша таблица слушала нестандартные события.
Стандартное отображение методов:
- Model.beforeMarshal => beforeMarshal
- Model.buildValidator => buildValidator
- Model.beforeFind => beforeFind
- Model.beforeSave => beforeSave
- Model.afterSave => afterSave
- Model.afterSaveCommit => afterSaveCommit
- Model.beforeDelete => beforeDelete
- Model.afterDelete => afterDelete
- Model.afterDeleteCommit => afterDeleteCommit
- Model.beforeRules => beforeRules
- Model.afterRules => afterRules
Возвращает
массивРеализация
Cake\Event\EventListenerInterface::implementedEvents() initialize()source public
initialize( array $config )
Инициализировать экземпляр таблицы. Вызывается после конструктора.
Вы можете использовать этот метод для определения ассоциаций, присоединения поведения, определения валидации и выполнения других необходимых операций инициализации.
public function initialize(array $config)
{
$this->belongsTo('Users');
$this->belongsToMany('Tagging.Tags');
$this->setPrimaryKey('something_else');
} Параметры
- массив
$config - Опции конфигурации, переданные в конструктор
loadInto()source public
loadInto( Cake\Datasource\EntityInterface|array $entities , array $contain )
Загружает указанные ассоциации в переданную сущность или список сущностей, выполняя дополнительные запросы в базе данных и объединяя результаты в соответствующие свойства.
Пример:
$user = $usersTable->get(1); $user = $usersTable->loadInto($user, ['Articles.Tags', 'Articles.Comments']); echo $user->articles[0]->title;
Вы также можете загрузить ассоциации для нескольких сущностей одновременно
Пример:
$users = $usersTable->find()->where([...])->toList(); $users = $usersTable->loadInto($users, ['Articles.Tags', 'Articles.Comments']); echo $user[1]->articles[0]->title;
Свойства ассоциаций будут перезаписаны для каждой сущности.
Параметры
-
Cake\Datasource\EntityInterface|массив$entities - одна сущность или список сущностей
- массив
$contain - Массив, совместимый с
contain().
Возвращает
Cake\Datasource\EntityInterface|массивСм. также
\Cake\ORM\Query::contain()marshaller()source public
marshaller( )
Получить объект, используемый для маршаллирования/преобразования данных массива в объекты.
Переопределите этот метод, если вы хотите, чтобы объект таблицы использовал пользовательскую логику маршаллирования.
Возвращает
Cake\ORM\MarshallerСм. также
Cake\ORM\MarshallernewEntities()source public
newEntities( array $data , array $options = [] )
Создать список сущностей + связанных сущностей из массива.
По умолчанию все ассоциации в этой таблице будут гидратированы. Вы можете ограничить, какие ассоциации будут созданы, или включить более глубокие ассоциации, используя параметр options:
$articles = $this->Articles->newEntities( $this->request->getData(), ['associated' => ['Tags', 'Comments.Users']] );
Вы можете ограничить поля, которые будут присутствовать в созданных сущностях, передав параметр fields, который также принимается для ассоциаций:
$articles = $this->Articles->newEntities($this->request->getData(), [ 'fields' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']] ] );
Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед их преобразованием в сущности.
Параметры
- массив
$data - Данные для создания сущности.
- массив
$optionsнеобязательно [] - Список опций для гидратации объектов.
Возвращает
Cake\Datasource\EntityInterface[]Массив гидратированных записей.
Реализация
Cake\Datasource\RepositoryInterface::newEntities() newEntity()source public
newEntity( array|null $data = null , array $options = [] )
Создаёт новую сущность + связанные сущности из массива.
По умолчанию все ассоциации в этой таблице будут гидратированы. Вы можете ограничить создание ассоциаций или включить более глубокие ассоциации, используя параметр options:
$article = $this->Articles->newEntity( $this->request->getData(), ['associated' => ['Tags', 'Comments.Users']] );
Вы можете ограничить поля, которые будут присутствовать в созданной сущности, передав параметр fields, который также принимается для ассоциаций:
$article = $this->Articles->newEntity($this->request->getData(), [ 'fields' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']] ] );
Параметр fields позволяет убрать или ограничить входные данные, которые попадают в сущность. Если вы хотите ослабить стандартные доступные поля сущности, вы можете использовать параметр accessibleFields:
$article = $this->Articles->newEntity( $this->request->getData(), ['accessibleFields' => ['protected_field' => true]] );
По умолчанию данные проверяются перед передачей новой сущности. В случае невалидных полей, они не будут присутствовать в результирующем объекте. Параметр validate может быть использован для отключения проверки переданных данных:
$article = $this->Articles->newEntity( $this->request->getData(), ['validate' => false] );
Также можно передать имя валидатора для использования в параметре validate. Если null передаётся в первый параметр этой функции, проверка не будет выполнена.
Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием их в сущности.
Параметры
- массив|null
$dataнеобязательный null - Данные для создания сущности.
- массив
$optionsнеобязательный [] - Список опций для гидратации объекта.
Возвращаемое значение
Cake\Datasource\EntityInterfaceРеализация
Cake\Datasource\RepositoryInterface::newEntity() patchEntities()source public
patchEntities( Cake\Datasource\EntityInterface[]|Traversable $entities , array $data , array $options = [] )
Объединяет каждый из элементов, переданных в $data, с сущностями, найденными в $entities, учитывая доступные поля, сконфигурированные в сущностях. Объединение выполняется путём сопоставления первичного ключа в каждом из элементов в $data и $entities.
Записи в $entities, которые не могут быть сопоставлены ни с одной записью в $data, будут отброшены. Записи в $data, которые не могут быть сопоставлены, будут обработаны как новые сущности.
При объединении ассоциаций HasMany или BelongsToMany, все сущности в массиве $data будут отображены. Те, которые могут быть сопоставлены по первичному ключу, получат объединённые данные, а те, которые нет, будут отброшены.
Вы можете ограничить поля, которые будут присутствовать в объединённых сущностях, передав параметр fields, который также принимается для ассоциаций:
$articles = $this->Articles->patchEntities($articles, $this->request->getData(), [ 'fields' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']] ] );
Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием их в сущности.
Параметры
-
Cake\Datasource\EntityInterface[]|Перебираемый$entities сущности, в которые будут объединены данные
- массив
$data - список массивов, которые будут объединены в сущности
- массив
$optionsнеобязательный [] - Список опций для гидратации объектов.
Возвращаемое значение
Cake\Datasource\EntityInterface[]Реализация
Cake\Datasource\RepositoryInterface::patchEntities() patchEntity()source public
patchEntity( Cake\Datasource\EntityInterface $entity , array $data , array $options = [] )
Объединяет переданные $data в $entity, учитывая доступные поля, сконфигурированные в сущности. Возвращает ту же сущность после изменения.
При объединении ассоциаций HasMany или BelongsToMany, все сущности в массиве $data будут отображены. Те, которые могут быть сопоставлены по первичному ключу, получат объединённые данные, а те, которые нет, будут отброшены.
Вы можете ограничить поля, которые будут присутствовать в объединённой сущности, передав параметр fields, который также принимается для ассоциаций:
$article = $this->Articles->patchEntity($article, $this->request->getData(), [ 'fields' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']] ] );
По умолчанию данные проверяются перед передачей в сущность. В случае невалидных полей, они не будут назначены сущности. Параметр validate может быть использован для отключения проверки данных:
$article = $this->patchEntity($article, $this->request->getData(),[ 'validate' => false ]);
Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием их в сущности.
При обновлении скалярных значений (null/булевы/строки/целые/вещественные), если свойство имеет то же самое значение, метод установки не будет вызван, и свойство не будет помечено как изменённое. Это оптимизация для предотвращения ненужных обновлений полей при сохранении сущностей.
Параметры
-
Cake\Datasource\EntityInterface$entity сущность, в которую будут объединены данные
- массив
$data - список пар ключ-значение полей, которые будут объединены в сущность
- массив
$optionsнеобязательный [] - Список опций для гидратации объекта.
Возвращаемое значение
Cake\Datasource\EntityInterfaceРеализация
Cake\Datasource\RepositoryInterface::patchEntity() primaryKey()source public deprecated
primaryKey( string|array|null $key = null )
Возвращает имя первичного ключа поля или устанавливает новое.
Устаревшее
3.4.0 Используйте setPrimaryKey()/getPrimaryKey() вместо этого.Параметры
- строка|массив|null
$keyнеобязательный null - Устанавливает новое имя, которое будет использоваться в качестве первичного ключа.
Возвращаемое значение
строка|массивquery()source public
query( )
Создаёт новый объект запроса для таблицы.
Возвращаемое значение
Cake\ORM\QueryРеализация
Cake\Datasource\RepositoryInterface::query() registryAlias()source public deprecated
registryAlias( string|null $registryAlias = null )
Возвращает ключ реестра таблицы, используемый для создания экземпляра этой таблицы, или устанавливает его.
Устаревшее
3.4.0 Используйте setRegistryAlias()/getRegistryAlias() вместо этого.Параметры
- строка|null
$registryAliasнеобязательный null - ключ, используемый для доступа к этому объекту
Возвращаемое значение
строкаremoveBehavior()source public
removeBehavior( string $name )
Удаляет поведение из реестра поведения этой таблицы.
Пример:
Удаление поведения из этой таблицы.
$this->removeBehavior('Tree'); Параметры
- строка
$name - Псевдоним, с которым было добавлено поведение.
Возвращаемое значение
$this
См.
Cake\ORM\Behaviorsave()source public
save( Cake\Datasource\EntityInterface $entity , array $options = [] )
Сохраняет сущность, основываясь на полях, помеченных как изменённые, и возвращает ту же сущность после успешного сохранения или false в случае ошибки.
Параметры
Массив параметров принимает следующие ключи:
- atomic: Выполнять сохранение и обратные вызовы в рамках транзакции базы данных (по умолчанию: true)
- checkRules: Проверять правила на сущности перед сохранением. Если проверка завершится неудачно, операция сохранения будет прервана. (по умолчанию: true)
- associated: Если
trueон сохранит сущности, связанные на первом уровне, как они найдены в переданном$entityвсякий раз, когда свойство, определённое для ассоциации, помечено как изменённое. Если массив, он будет интерпретирован как список ассоциаций для сохранения. Возможно, передать разные параметры для сохранения на объектах связанных таблиц, используя этот ключ и сделав пользовательские параметры значением массива. Еслиfalseсвязанные записи не будут сохранены. (по умолчанию:true) - checkExisting: Проверять, существует ли сущность, предполагая, что сущность не является новой и первичный ключ был установлен.
События
При сохранении этот метод вызовет четыре события:
- Model.beforeRules: Будет вызвано непосредственно перед проверкой правил для переданной сущности, если ключ
checkRulesв $options не установлен в false. Обработчики получат в качестве аргументов сущность, массив параметров и тип операции. Если событие остановлено, результат проверки правил будет установлен на результат самого события. - Model.afterRules: Будет вызвано непосредственно после вызова метода
checkRules()для сущности. Обработчики получат в качестве аргументов сущность, массив параметров, результат проверки правил и тип операции. Если событие остановлено, результат проверки будет установлен на результат самого события. - Model.beforeSave: Будет вызвано непосредственно перед вычислением списка полей для сохранения. Оно получает как аргументы сущность и массив параметров. Массив параметров передаётся как ArrayObject, поэтому любые изменения в нём будут отражены во всех слушателях и сохранены в конце события, чтобы их можно было использовать для остальной части операции сохранения. Возврат false в любом из слушателей прервёт процесс сохранения. Если событие остановлено с помощью API событий, объект события вернёт свойство
result. Это может быть полезно при реализации собственной стратегии сохранения внутри слушателя. - Model.afterSave: Будет вызвано после успешного вставки или сохранения. Слушатели получат сущность и массив параметров в качестве аргументов. Тип выполненной операции (вставка или обновление) может быть определён путём проверки метода сущности
isNew, true означает вставку, а false – обновление. - Model.afterSaveCommit: Будет вызвано после подтверждения транзакции для атомарного сохранения. Слушатели получат сущность и массив параметров в качестве аргументов.
Этот метод определит, необходимо ли вставить или обновить переданную сущность в базе данных. Он делает это, проверяя метод isNew на сущности. Если сущность, подлежащая сохранению, возвращает ненулевое значение от её метода errors(), она не будет сохранена.
Сохранение в связанных таблицах
По умолчанию этот метод будет сохранять сущности, принадлежащие связанным таблицам, всякий раз, когда грязное свойство соответствует имени свойства, установленного для ассоциации в этой таблице. Можно управлять тем, какие ассоциации будут сохранены и передавать дополнительные параметры для их сохранения.
// Only save the comments association
$articles->save($entity, ['associated' => ['Comments']]);
// Save the company, the employees and related addresses for each of them.
// For employees do not check the entity rules
$companies->save($entity, [
'associated' => [
'Employees' => [
'associated' => ['Addresses'],
'checkRules' => false
]
]
]);
// Save no associations
$articles->save($entity, ['associated' => false]); Параметры
-
Cake\Datasource\EntityInterface$entity - массив
$optionsнеобязательно []
Возвращает
Cake\Datasource\EntityInterface|falseВыбрасывает
Cake\ORM\Exception\RolledbackTransactionExceptionЕсли транзакция прервана в событии afterSave.
Реализация
Cake\Datasource\RepositoryInterface::save() saveMany()source public
saveMany( Cake\Datasource\EntityInterface[]|Cake\Datasource\ResultSetInterface $entities , array|ArrayAccess $options = [] )
Сохраняет несколько сущностей таблицы.
Записи будут сохранены в транзакции, которая будет откатана, если хоть одна запись не сможет быть сохранена из-за невалидных данных или ошибки базы данных.
Параметры
-
Cake\Datasource\EntityInterface[]|Cake\Datasource\ResultSetInterface$entities - Сущности для сохранения.
- массив|ArrayAccess
$optionsнеобязательно [] - Параметры, используемые при вызове Table::save() для каждой сущности.
Возвращает
boolean|Cake\Datasource\EntityInterface[]|Cake\Datasource\ResultSetInterfaceFalse при ошибке, список сущностей при успехе.
Выбрасывает
ExceptionsaveOrFail()source public
saveOrFail( Cake\Datasource\EntityInterface $entity , array|ArrayAccess $options = [] )
Попытаться сохранить сущность или выбросить PersistenceFailedException, если проверки правил приложения завершились неудачно, сущность содержит ошибки или сохранение было прервано обратным вызовом.
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность для сохранения
- массив|ArrayAccess
$optionsнеобязательно [] - Параметры для сохранения.
Возвращает
Cake\Datasource\EntityInterfaceВыбрасывает
Cake\ORM\Exception\PersistenceFailedExceptionЕсли сущность не может быть сохранена
См. также
\Cake\ORM\Table::save()schema()source public deprecated
schema( array|Cake\Database\Schema\TableSchema|null $schema = null )
Возвращает объект схемы таблицы, описывающий свойства этой таблицы.
Если передан TableSchema, он будет использован для этой таблицы вместо значения по умолчанию.
Если передан массив, будет создан новый TableSchema на его основе и использован в качестве схемы для этой таблицы.
Устарело 3.4.0 Используйте setSchema()/getSchema() вместо этого.
Параметры
- массив|
Cake\Database\Schema\TableSchema|null$schemaнеобязательно null - Новая схема, которая будет использоваться для этой таблицы
Возвращает
Cake\Database\Schema\TableSchemasetAlias()source public
setAlias( string $alias )
Устанавливает псевдоним таблицы.
Параметры
- строка
$alias - Псевдоним таблицы
Возвращает
$this
setConnection()source public
setConnection( Cake\Datasource\ConnectionInterface $connection )
Устанавливает экземпляр подключения.
Параметры
-
Cake\Datasource\ConnectionInterface$connection - Экземпляр подключения
Возвращает
$this
setDisplayField()source public
setDisplayField( string $key )
Устанавливает поле отображения.
Параметры
- строка
$key - Имя, используемое в качестве поля отображения.
Возвращает
$this
setEntityClass()source public
setEntityClass( string $name )
Устанавливает класс, используемый для гидратации строк для этой таблицы.
Параметры
- строка
$name - Название класса для использования
Возвращает
$this
Выбрасывает
Cake\ORM\Exception\MissingEntityExceptionесли класс сущности не найден
setPrimaryKey()source public
setPrimaryKey( string|array $key )
Устанавливает имя поля первичного ключа.
Параметры
- строка|массив
$key - Устанавливает новое имя, используемое в качестве первичного ключа
Возвращает
$this
setRegistryAlias()source public
setRegistryAlias( string $registryAlias )
Устанавливает ключ реестра таблицы, используемый для создания этого экземпляра таблицы.
Параметры
- строка
$registryAlias - Ключ доступа к этому объекту.
Возвращает
$this
setSchema()source public
setSchema( array|Cake\Database\Schema\TableSchema $schema )
Устанавливает объект схемы таблицы, описывающий свойства этой таблицы.
Если передан массив, будет создан новый TableSchema на его основе и использован в качестве схемы для этой таблицы.
Параметры
- массив|
Cake\Database\Schema\TableSchema$schema - Схема, используемая для этой таблицы
Возвращает
$this
setTable()source public
setTable( string $table )
Устанавливает имя таблицы базы данных.
Это может включать имя схемы базы данных в формате 'схема.таблица'. Если имя должно быть заключено в кавычки, включите автоматическое заключение идентификаторов в кавычки.
Параметры
- строка
$table - Имя таблицы.
Возвращает
$this
table()source public deprecated
table( string|null $table = null )
Возвращает имя таблицы базы данных или устанавливает новое.
Устарело
3.4.0 Используйте setTable()/getTable() вместо этого.Параметры
- string|null
$tableнеобязательно null - новое имя таблицы
Возвращает
stringupdateAll()source public
updateAll( string|array|callable|Cake\Database\Expression\QueryExpression $fields , mixed $conditions )
Обновляет все соответствующие записи.
Параметры
- string|array|callable|
Cake\Database\Expression\QueryExpression$fields - Хеш полей => нового значения.
- mixed
$conditions Условия, используемые для поиска. Принимает все, что может принять Query::where().
Возвращает
integerКоличество обновлённых строк.
Реализация
Cake\Datasource\RepositoryInterface::updateAll() validateUnique()source public
validateUnique( mixed $value , array $options , array $context = null )
Метод валидации, используемый для проверки уникальности значения в столбце. Предназначен для использования с API валидации, а не для непосредственного вызова.
Пример:
$validator->add('email', [
'unique' => ['rule' => 'validateUnique', 'provider' => 'table']
]) Валидация уникальности может быть ограничена значением другого столбца:
$validator->add('email', [
'unique' => [
'rule' => ['validateUnique', ['scope' => 'site_id']],
'provider' => 'table'
]
]); В приведенном выше примере уникальность электронной почты будет ограничена только строками, имеющими одинаковый site_id. Ограничение будет использоваться только в том случае, если столбец ограничения присутствует в данных, подлежащих валидации.
Параметры
- mixed
$value - Значение столбца, уникальность которого необходимо проверить.
- array
$options Массив параметров, необязательно содержащий ключ 'scope'. Также может быть контекстом валидации, если опций нет.
- array
$contextнеобязательно null - Либо контекст валидации, либо null.
Возвращает
booleanTrue, если значение уникально, или false, если было предоставлено нескалярное, не уникальное значение.
validationMethodExists()source protected
validationMethodExists( $method )
Методы, используемые из Cake\Event\EventDispatcherTrait
dispatchEvent()source public
dispatchEvent( string $name , array|null $data = null , object|null $subject = null )
Обёртка для создания и отправки событий.
Возвращает обработанное событие.
Параметры
- string
$name - Имя события.
- array|null
$dataнеобязательно null Любое значение, которое вы хотите передать с этим событием, для того, чтобы его могли прочитать слушатели.
- object|null
$subjectнеобязательно null Объект, к которому относится это событие ($this по умолчанию).
Возвращает
Cake\Event\EventeventManager()source public deprecated
eventManager( Cake\Event\EventManager $eventManager = null )
Возвращает экземпляр менеджера Cake\Event\EventManager для этого объекта.
Вы можете использовать этот экземпляр для регистрации новых слушателей или обратных вызовов для событий объекта, или создать свои собственные события и инициировать их по своему желанию.
Устарело
3.5.0 Используйте getEventManager()/setEventManager() вместо этого.Параметры
-
Cake\Event\EventManager$eventManagerнеобязательно null - eventManager для установки
Возвращает
Cake\Event\EventManagergetEventManager()source public
getEventManager( )
Возвращает экземпляр менеджера Cake\Event\EventManager для этого объекта.
Вы можете использовать этот экземпляр для регистрации новых слушателей или обратных вызовов для событий объекта, или создать свои собственные события и инициировать их по своему желанию.
Возвращает
Cake\Event\EventManagersetEventManager()source public
setEventManager( Cake\Event\EventManager $eventManager )
Возвращает экземпляр менеджера Cake\Event\EventManager для этого объекта.
Вы можете использовать этот экземпляр для регистрации новых слушателей или обратных вызовов для событий объекта, или создать свои собственные события и инициировать их по своему желанию.
Параметры
-
Cake\Event\EventManager$eventManager - eventManager для установки
Возвращает
$this
Методы, используемые из Cake\Datasource\RulesAwareTrait
checkRules()source public
checkRules( Cake\Datasource\EntityInterface $entity , string $operation = RulesChecker::CREATE , ArrayObject|array|null $options = null )
Возвращает true, если переданная сущность соответствует всем правилам, хранящимся в проверке правил.
Параметры
-
Cake\Datasource\EntityInterface$entity - Сущность, подлежащая проверке на соответствие правилам.
- string
$operationнеобязательно RulesChecker::CREATE - Операция, выполняемая. 'create', 'update' или 'delete'.
- ArrayObject|array|null
$optionsнеобязательно null - Параметры для передачи правилам.
Возвращает
booleanrulesChecker()source public
rulesChecker( )
Возвращает RulesChecker для этого экземпляра.
Объект RulesChecker используется для проверки сущности на соответствие правилам, которые могут включать сложную логику или данные, которые нужно извлечь из соответствующих источников данных.
Возвращает
Cake\Datasource\RulesCheckerСм. также
Cake\Datasource\RulesCheckerМетоды, используемые из Cake\Validation\ValidatorAwareTrait
createValidator()source protected
createValidator( string $name )
Создаёт валидатор, используя пользовательский метод внутри вашего класса.
Этот метод используется только для создания нового валидатора и не сохраняет его в вашем объекте. Если вы хотите создать и повторно использовать валидаторы, используйте метод getValidator() вместо этого.
Параметры
- string
$name - Имя набора валидации для создания.
Возвращает
Cake\Validation\ValidatorВыбрасывает
RuntimeExceptiongetValidator()source public
getValidator( string|null $name = null )
Возвращает правила валидации, помеченные $name. Возможно наличие нескольких наборов валидации с разными именами, это полезно, когда вам нужно использовать различные правила при сохранении из разных процедур вашей системы.
Если валидатор ранее не был установлен, этот метод создаст валидатор, используя метод внутри вашего класса.
Например, если вы хотите создать набор валидации под названием «forSubscription», вам нужно создать метод в подклассе Table следующим образом:
public function validationForSubscription($validator)
{
return $validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->requirePresence('username');
}
$validator = $this->getValidator('forSubscription'); Вы можете реализовать этот метод в validationDefault в подклассе Table, если хотите иметь набор валидации, который применяется в тех случаях, когда не указан ни один другой набор.
Если аргумент $name не был предоставлен, будет возвращён валидатор по умолчанию. Название валидатора по умолчанию можно настроить в константе класса DEFAULT_VALIDATOR.
Параметры
- string|null
$nameнеобязательно null - Имя набора валидации для возврата.
Возвращает
Cake\Validation\ValidatorhasValidator()source public
hasValidator( string $name )
Проверяет, установлен ли валидатор.
Параметры
- string
$name - Имя валидатора.
Возвращает
booleansetValidator()source public
setValidator( string $name , Cake\Validation\Validator $validator )
Этот метод сохраняет пользовательский валидатор под заданным именем.
Вы можете создать объект самостоятельно и сохранить его в своём объекте:
$validator = new \Cake\Validation\Validator($table);
$validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->allowEmpty('bio');
$this->setValidator('forSubscription', $validator); Параметры
- string
$name - Имя валидатора для установки.
-
Cake\Validation\Validator$validator - Объект валидатора для установки.
Возвращает
$this
validationDefault()source public
validationDefault( Cake\Validation\Validator $validator )
Возвращает объект валидатора по умолчанию. Подклассы могут переопределить эту функцию, чтобы добавить набор правил валидации по умолчанию в объект валидатора.
Параметры
-
Cake\Validation\Validator$validator Валидатор, который можно изменить, чтобы добавить к нему некоторые правила.
Возвращает
Cake\Validation\Validatorvalidator()source public deprecated
validator( string|null $name = null , Cake\Validation\Validator $validator = null )
Возвращает правила валидации, помеченные тегом $name. Можно иметь несколько наборов правил валидации с разными именами, что полезно, когда вам нужно использовать разные правила при сохранении из разных процедур вашей системы.
Существуют два способа создания и именования наборов правил валидации: создание нового метода внутри вашего подкласса таблицы или самостоятельное построение объекта валидатора и его хранение с помощью этого метода.
Например, если вы хотите создать набор правил валидации под названием «forSubscription», вам нужно создать метод в вашем подклассе таблицы следующим образом:
public function validationForSubscription($validator)
{
return $validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->requirePresence('username');
} В противном случае вы можете самостоятельно построить объект и сохранить его в объекте таблицы:
$validator = new \Cake\Validation\Validator($table);
$validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->allowEmpty('bio');
$table->setValidator('forSubscription', $validator); Вы можете реализовать метод в validationDefault в вашем подклассе таблицы, если хотите иметь набор правил валидации, который применяется в тех случаях, когда не указан никакой другой набор.
Устарело
3.5.0 Используйте getValidator/setValidator вместо этого.Параметры
- string|null
$nameнеобязательно null - имя набора правил валидации для возврата
-
Cake\Validation\Validator$validatorнеобязательно null экземпляр валидатора для хранения, используйте null для получения валидатора.
Возвращает
Cake\Validation\ValidatorИсключения
RuntimeExceptionМагические методы, унаследованные от Cake\Datasource\RepositoryInterface
getAlias(), getRegistryAlias() |
Магические методы, унаследованные от Cake\Event\EventDispatcherInterface
getEventManager() |
Подробности свойств
$_aliassource
protected string
Человеческое имя, присвоенное этому экземпляру. Несколько объектов, представляющих одну и ту же таблицу базы данных, могут существовать с помощью разных псевдонимов.
$_associationssource
protected Cake\ORM\AssociationCollection
Контейнер ассоциаций для этой таблицы.
$_registryAliassource
protected string
Ключ реестра, используемый для создания этого объекта таблицы
$_schemasource
protected Cake\Database\Schema\TableSchema
Объект схемы, содержащий описание полей этой таблицы
© 2005–present 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.
https://api.cakephp.org/3.8/class-Cake.ORM.Table.html