Класс Таблица
Представляет отдельную таблицу базы данных.
Предоставляет методы для извлечения данных из неё и управления ассоциациями с другими таблицами. Несколько экземпляров этого класса могут быть созданы для одной и той же таблицы базы данных с различными псевдонимами, что позволяет более богатым и выразительным образом описывать структуру базы данных.
Извлечение данных
Основной способ извлечения данных — использование 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
Краткое описание констант
-
string'Model.buildValidator' -
string'Cake\ORM\RulesChecker' -
string'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Добавить поведение.
- alias() publicВозвращает псевдоним таблицы или задаёт новый.
- aliasField() publicПрисваивает псевдоним полю с текущим псевдонимом таблицы.
- association() publicВозвращает объект ассоциации, сконфигурированный для указанного псевдонима, если он существует.
- associations() publicПолучить коллекцию ассоциаций для этой таблицы.
- behaviors() publicВозвращает реестр поведения для этой таблицы.
- belongsTo() public
Создает новую ассоциацию BelongsTo между этой таблицей и целевой таблицей. Ассоциация "belongs to" — это отношение N-1, где эта таблица — сторона N, и где для каждой записи в этой таблице существует одна связанная запись в целевой таблице.
- belongsToMany() public
Создает новую ассоциацию BelongsToMany между этой таблицей и целевой таблицей. Ассоциация "belongs to many" — это отношение M-N.
- buildRules() public
- callFinder() public
Непосредственно вызывает метод поиска и применяет его к переданному запросу; если запрос не передан, создается новый и возвращается.
- connection() publicВозвращает экземпляр соединения или задаёт новый.
- Получить имя соединения по умолчанию.
- delete() publicУдалить одну сущность.
- deleteAll() publicУдаляет все записи, соответствующие заданным условиям.
- deleteOrFail() public
Попробовать удалить сущность или сгенерировать исключение PersistenceFailedException, если сущность является новой, не имеет значения первичного ключа, проверки правил приложения не удались или удаление было прервано обратным вызовом.
- displayField() publicВозвращает поле отображения или задаёт новое.
- entityClass() public
Возвращает класс, используемый для гидратации строк для этой таблицы, или задаёт новый.
- exists() public
Возвращает true, если в этом хранилище есть хоть одна запись, соответствующая заданным условиям.
- find() public
Создает новый запрос для этого хранилища и применяет некоторые значения по умолчанию в зависимости от типа выполненного поиска.
- findAll() publicВозвращает переданный запрос.
- findList() public
Настраивает объект запроса таким образом, чтобы результаты отображались в виде индексированного массива, что полезно в тех местах, где нужен список, например, для заполнения выпадающих списков.
- findOrCreate() publicИщет существующую запись или создаёт новую.
- findThreaded() public
Результаты этого поиска будут представленны вложенным массивом, что уместно, если вы хотите использовать поле parent_id ваших данных модели для построения вложенных результатов.
- get() public
Возвращает одну запись после её поиска по первичному ключу; если запись не найдена, метод генерирует исключение.
- getAlias() publicВозвращает псевдоним таблицы.
- getConnection() publicВозвращает экземпляр соединения.
- getDisplayField() publicВозвращает поле отображения.
- getEntityClass() publicВозвращает класс, используемый для гидратации строк этой таблицы.
- getPrimaryKey() publicВозвращает имя поля первичного ключа.
- getRegistryAlias() publicВозвращает ключ реестра таблицы, используемый для создания экземпляра этой таблицы.
- getSaveOptionsBuilder() publicПолучает экземпляр SaveOptionsBuilder.
- getSchema() publicВозвращает объект схемы таблицы, описывающий свойства этой таблицы.
- getTable() publicВозвращает имя таблицы базы данных.
- 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, учитывая доступные поля, настроенные на сущности. Возвращает ту же сущность после изменения. - primaryKey() publicВозвращает имя поля первичного ключа или задаёт новое.
- query() publicСоздаёт новый экземпляр Query для этого репозитория.
- registryAlias() publicВозвращает ключ реестра таблицы, используемый для создания этого экземпляра таблицы, или устанавливает его.
- removeBehavior() publicУдаляет поведение из реестра поведения этой таблицы.
- save() public
Сохраняет сущность на основе полей, помеченных как грязные, и возвращает ту же сущность после успешного сохранения или false в случае ошибки.
- saveMany() publicСохраняет несколько сущностей таблицы.
- saveOrFail() public
Попытка сохранить сущность или выбросить PersistenceFailedException, если проверки правил приложения не прошли, сущность содержит ошибки или сохранение было прервано обратным вызовом.
- schema() publicВозвращает объект схемы таблицы, описывающий свойства этой таблицы.
- setAlias() publicУстанавливает псевдоним таблицы.
- setConnection() publicУстанавливает экземпляр соединения.
- setDisplayField() publicУстанавливает поле отображения.
- setEntityClass() publicУстанавливает класс, используемый для гидратации строк для этой таблицы.
- setPrimaryKey() publicУстанавливает имя поля первичного ключа.
- setRegistryAlias() publicУстанавливает ключ реестра таблицы, используемый для создания этого экземпляра таблицы.
- setSchema() publicУстанавливает объект схемы таблицы, описывающий свойства этой таблицы.
- setTable() publicУстанавливает имя таблицы базы данных.
- table() 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 - Список аргументов, переданных в функцию.
Возвращает
смешанный типВыбрасывает
BadMethodCallExceptionесли отсутствуют аргументы или когда & или & или объединены.
_executeTransaction()source protected
_executeTransaction( callable $worker , boolean $atomic true )
Обрабатывает логику выполнения рабочей функции внутри транзакции.
Параметры
- вызов
$worker - Рабочая функция, которая будет выполняться внутри транзакции.
- логическое значение
$atomicнеобязательно true - Выполнять ли рабочую функцию внутри транзакции базы данных.
Возвращает
смешанный тип_getFindOrCreateQuery()source protected
_getFindOrCreateQuery( array|Cake\ORM\Query|string $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 - Фактические данные, которые необходимо сохранить
Возвращает
Cake\Datasource\EntityInterface|booleanВыбрасывает
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 - параметры, которые нужно использовать для операции сохранения
Возвращает
booleanTrue при успехе
Выбрасывает
Cake\ORM\Exception\RolledbackTransactionExceptionЕсли транзакция прервана в событии afterSave.
_processDelete()source protected
_processDelete( Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Выполняет операцию удаления.
Удалит предоставленную сущность. Удалит строки из любых зависимых ассоциаций и очистит таблицы объединения для ассоциаций BelongsToMany.
Параметры
-
Cake\Datasource\EntityInterface$entity - Сущность для удаления.
- ArrayObject
$options - Параметры для удаления.
Возвращает
booleanРезультат
Выбрасывает
InvalidArgumentExceptionесли нет значений первичного ключа переданной сущности
_processFindOrCreate()source protected
_processFindOrCreate( array|callable $search , callable $callback null , array $options [] )
Выполняет фактический поиск и/или создание сущности на основе переданных параметров.
Параметры
- массив|вызываемый
$search Критерии для поиска существующей записи или вызываемый объект, который настраивает запрос поиска.
- вызываемый
$callbackнеобязательно null Обратный вызов, который будет вызван для вновь созданных сущностей. Этот обратный вызов будет вызван перед сохранением сущности.
- массив
$optionsнеобязательно [] - Параметры, которые нужно использовать при сохранении.
Возвращает
Cake\Datasource\EntityInterfaceСущность.
_processSave()source protected
_processSave( Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Выполняет фактическое сохранение сущности на основе переданных параметров.
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность, которая должна быть сохранена
- ArrayObject
$options - параметры, которые нужно использовать для операции сохранения
Возвращает
Cake\Datasource\EntityInterface|booleanВыбрасывает
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 )
Проверяет, выполнил ли вызывающий объект операцию фиксации транзакции.
Параметры
- boolean
$atomic - True, если использовалась атомарная транзакция.
- boolean
$primary - True, если использовался первичный ключ.
Возвращает
booleanВозвращает true, если транзакция была зафиксирована.
_update()source protected
_update( Cake\Datasource\EntityInterface $entity , array $data )
Вспомогательная функция для обработки обновления данных сущности в таблице
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность-субъект, из которой были извлечены данные
- массив
$data - Фактические данные, которые необходимо сохранить
Возвращает
Cake\Datasource\EntityInterface|booleanВыбрасывает
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\Behavioralias()source public
alias( string|null $alias null )
Возвращает псевдоним таблицы или задаёт новый
Устаревшее
3.4.0 Используйте setAlias()/getAlias() вместо этого.Параметры
- string|null
$aliasнеобязательно null - новый псевдоним таблицы
Возвращает
stringРеализация
Cake\Datasource\RepositoryInterface::alias() aliasField()source public
aliasField( string $field )
Присваивает псевдоним полю с текущим псевдонимом таблицы.
Если поле уже имеет псевдоним, это приведет к бездействию.
Параметры
- string
$field - Поле, которому необходимо присвоить псевдоним.
Возвращает
stringПрефикс поля с псевдонимом таблицы.
association()source public
association( string $name )
Возвращает объект ассоциации, настроенный для указанного псевдонима, если таковой имеется
Параметры
- string
$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 из findera.
Этот метод вернёт созданный объект ассоциации.
Параметры
- string
$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- array
$optionsнеобязательно [] - Список опций для настройки определения ассоциации
Возвращает
Cake\ORM\Association\BelongsTobelongsToMany()source public
belongsToMany( string $associated , array $options [] )
Создаёт новую ассоциацию BelongsToMany между этой таблицей и целевой таблицей. Ассоциация «belongs to many» — это отношение M-N.
Целевая таблица может быть определена по её имени, которое передаётся в первом аргументе, или вы можете передать имя класса для создания экземпляра или непосредственно экземпляр целевой таблицы.
Массив 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'.
Этот метод вернёт созданный объект ассоциации.
Параметры
- string
$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- array
$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 [] )
Вызывает метод поиска напрямую и применяет его к переданному запросу. Если запрос не передан, будет создан и возвращён новый
Параметры
- string
$type - имя вызываемого метода поиска
-
Cake\ORM\Query$query - объект запроса, к которому применяются параметры поиска
- array
$optionsнеобязательно [] - Список параметров для передачи методу поиска
Возвращает
Cake\ORM\QueryВыбрасывает
BadMethodCallExceptionconnection()source public
connection( Cake\Datasource\ConnectionInterface $connection null )
Возвращает экземпляр подключения или устанавливает новый
Устаревшее
3.4.0 Используйте setConnection()/getConnection() вместо этого.Параметры
-
Cake\Datasource\ConnectionInterface$connectionнеобязательно null - Новый экземпляр подключения
Возвращает
Cake\Datasource\ConnectionInterfacedefaultConnectionName()source public static
defaultConnectionName( )
Получить имя подключения по умолчанию.
Этот метод используется для получения имени подключения по умолчанию, если экземпляр создаётся через TableRegistry без указания подключения.
Возвращает
stringСм. также
\Cake\ORM\TableRegistry::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Срабатывает после завершения транзакции при атомарном удалении. Получает событие, сущность и параметры.
Аргумент параметров будет преобразован в экземпляр \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
displayField( string|null $key null )
Возвращает поле отображения или устанавливает новое
Устарело
3.4.0 Используйте setDisplayField()/getDisplayField() вместо этого.Параметры
- string|null
$keyнеобязательно null - устанавливает новое имя для использования в качестве поля отображения
Возвращает
stringentityClass()source public
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
Использование
Использование массива параметров:
$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Библиотека построения запросов
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|Cake\ORM\Query $search , callable $callback null , array $options [] )
Ищет существующую запись или создаёт новую.
Функция find() будет использована для поиска существующей записи, используя атрибуты, определённые в $search. Если записи соответствуют условиям, будет возвращена первая запись.
Если запись не найдена, будет создана новая сущность со свойствами $search. Если указана функция обратного вызова, она будет вызвана, позволяя вам определить дополнительные значения по умолчанию. Новая сущность будет сохранена и возвращена.
Если условия поиска требуют пользовательского порядка, ассоциаций или условий, то параметр $search может быть вызываемым, который принимает запрос Query в качестве аргумента, или объектом \Cake\ORM\Query, переданным в качестве параметра $search. Это позволит вам настроить результаты поиска.
Параметры
Массив параметров передаётся в метод save, за исключением следующих ключей:
- atomic: Выполнять ли методы find, save и обратные вызовы внутри транзакции базы данных (по умолчанию: true)
- defaults: Использовать ли критерии поиска в качестве значений по умолчанию для новой сущности (по умолчанию: true)
Параметры
- array|
Cake\ORM\Query$search Критерии поиска существующих записей. Обратите внимание, что если вы передаёте объект запроса, вам нужно будет использовать второй аргумент метода для изменения данных сущности перед сохранением.
- callable
$callbackнеобязательно null Функция обратного вызова, которая будет вызвана для вновь созданных сущностей. Этот обратный вызов будет вызван *до* сохранения сущности.
- array
$optionsнеобязательно [] - Параметры для использования при сохранении.
Возвращает
Cake\Datasource\EntityInterfaceСущность.
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 - Запрос для поиска
- массив
$options - Параметры поиска
Возвращает
Cake\ORM\QueryСтроитель запроса
get()source public
get( mixed $primaryKey , array|ArrayAccess $options [] )
Возвращает единственную запись после её поиска по первичному ключу. Если запись не найдена, метод генерирует исключение.
Использование
Получение статьи и некоторых взаимосвязей:
$article = $articles->get(1, ['contain' => ['Users', 'Comments']]);
Параметры
- смешанный
$primaryKey - Значение первичного ключа для поиска
- массив|ArrayAccess
$optionsнеобязательно [] - Параметры, принимаемые методом
Table::find()
Возвращает
Cake\Datasource\EntityInterfaceИсключения
Cake\Datasource\Exception\InvalidPrimaryKeyExceptionПри неверном количестве элементов в $primaryKey.
Реализация
Cake\Datasource\RepositoryInterface::get() getConnection()source public
getConnection( )
Возвращает экземпляр соединения.
Возвращает
Cake\Database\ConnectiongetEntityClass()source public
getEntityClass( )
Возвращает класс, используемый для гидратации строк для этой таблицы.
Возвращает
строкаgetPrimaryKey()source public
getPrimaryKey( )
Возвращает имя поля первичного ключа.
Возвращает
строка|массивgetRegistryAlias()source public
getRegistryAlias( )
Возвращает ключ реестра таблицы, используемый для создания этого экземпляра таблицы.
Возвращает
строкаgetSaveOptionsBuilder()source public
getSaveOptionsBuilder( array $options [] )
Возвращает экземпляр SaveOptionsBuilder.
Параметры
- массив
$optionsнеобязательно [] - Параметры для обработки билдером.
Возвращает
Cake\ORM\SaveOptionsBuildergetSchema()source public
getSchema( )
Возвращает объект схемы таблицы, описывающий свойства этой таблицы.
Возвращает
Cake\Database\Schema\TableSchemahasBehavior()source public
hasBehavior( string $name )
Проверяет, загружен ли компонент с указанным псевдонимом.
Параметры
- строка
$name - Псевдоним компонента для проверки.
Возвращает
логическое значениеСуществует ли компонент.
hasField()source public
hasField( string $field )
Проверяет наличие определённого поля/столбца в таблице.
Делегирует вызов объекту схемы и проверяет наличие столбца, используя экземпляр Schema\Table.
Параметры
- строка
$field - Поле для проверки.
Возвращает
логическое значениеTrue, если поле существует, false — если нет.
Реализация
Cake\Datasource\RepositoryInterface::hasField() hasFinder()source public
hasFinder( string $type )
Возвращает true, если поиск существует для таблицы
Параметры
- строка
$type - имя поиска для проверки
Возвращает
логическое значениеhasMany()source public
hasMany( string $associated , array $options [] )
Создаёт новую связь HasMany между этой таблицей и целевой таблицей. Связь "имеет много" — это отношение 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.
Этот метод возвращает объект ассоциации, который был создан.
Параметры
- строка
$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']] );
Вы можете ограничить поля, которые будут присутствовать в созданных объектах, передав опцию fieldList, которая также принимается для ассоциаций:
$articles = $this->Articles->newEntities($this->request->getData(), [ 'fieldList' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fieldList' => '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']] );
Вы можете ограничить поля, которые будут присутствовать в созданном объекте, передав опцию fieldList, которая также принимается для ассоциаций:
$article = $this->Articles->newEntity($this->request->getData(), [ 'fieldList' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fieldList' => 'username']] ] );
Опция fieldList позволяет удалить или ограничить данные ввода, которые попадают в объект. Если вы хотите ослабить доступные поля объекта по умолчанию, вы можете использовать опцию 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 появятся; те, которые могут быть сопоставлены по первичному ключу, получат данные, объединённые в них, но те, которые не могут быть сопоставлены, будут проигнорированы.
Вы можете ограничить поля, которые будут присутствовать в объединённых объектах, передав опцию fieldList, которая также принимается для ассоциаций:
$articles = $this->Articles->patchEntities($articles, $this->request->getData(), [ 'fieldList' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fieldList' => '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 будут отображаться, те, которые можно сопоставить по первичному ключу, получат объединенные данные, а те, которые нельзя, будут отброшены.
Вы можете ограничить поля, присутствующие в объединённой сущности, передав опцию fieldList, которая также поддерживается для ассоциаций:
$article = $this->Articles->patchEntity($article, $this->request->getData(), [ 'fieldList' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fieldList' => 'username']] ] );
По умолчанию данные проверяются перед передачей сущности. В случае некорректных полей, они не будут присвоены сущности. Опция validate может использоваться для отключения проверки переданных данных:
$article = $this->patchEntity($article, $this->request->getData(),[ 'validate' => false ]);
Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием в сущности.
При обновлении скалярных значений (null/boolean/string/integer/float), если свойство в настоящее время имеет идентичное значение, метод-сеттер не будет вызван, и свойство не будет помечено как изменённое. Это оптимизация, предотвращающая ненужные обновления полей при сохранении сущностей.
Параметры
-
Cake\Datasource\EntityInterface$entity сущность, в которую будут объединены данные
- массив
$data - список пар ключ-значение для объединения в сущность
- массив
$optionsопционально [] - Список опций для гидратации объекта.
Возвращает
Cake\Datasource\EntityInterfaceРеализация
Cake\Datasource\RepositoryInterface::patchEntity() primaryKey()source public
primaryKey( string|array|null $key null )
Возвращает имя первичного ключа или устанавливает новое.
Устаревшее
3.4.0 Используйте setPrimaryKey()/getPrimaryKey() вместо этого.Параметры
- строка|массив|null
$keyопционально null - Устанавливает новое имя, используемое в качестве первичного ключа
Возвращает
строка|массивquery()source public
query( )
Создаёт новый экземпляр Query для данного репозитория.
Возвращает
Cake\ORM\QueryРеализация
Cake\Datasource\RepositoryInterface::query() registryAlias()source public
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|ArrayAccess $options [] )
Сохраняет сущность, основываясь на полях, помеченных как изменённые, и возвращает ту же сущность после успешного сохранения или false в случае ошибки.
Опции
Массив опций принимает следующие ключи:
- atomic: Выполнять сохранение и обратные вызовы внутри транзакции базы данных (по умолчанию: true)
- checkRules: Проверять правила на сущности перед сохранением; если проверка не пройдена, операция сохранения прерывается. (по умолчанию: true)
- associated: Если
trueто будут сохранены связанные сущности 1-го уровня, как они найдены в переданном массиве$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 - сущность, подлежащая сохранению
- массив|ArrayAccess
$optionsопционально [] - Опции для сохранения.
Возвращает
Cake\Datasource\EntityInterface|falseВыбрасывает
Cake\ORM\Exception\RolledbackTransactionExceptionЕсли транзакция прервана в событии afterSave.
Реализация
Cake\Datasource\RepositoryInterface::save() saveMany()source public
saveMany( Cake\Datasource\EntityInterface[]|Cake\ORM\ResultSet $entities , array|ArrayAccess $options [] )
Сохраняет несколько сущностей таблицы.
Записи будут сохранены в транзакции, которая будет отменена, если хоть одна из записей не будет сохранена из-за ошибки валидации или базы данных.
Параметры
-
Cake\Datasource\EntityInterface[]|Cake\ORM\ResultSet$entities - Сущности для сохранения.
- массив|ArrayAccess
$optionsопционально [] - Опции, используемые при вызове Table::save() для каждой сущности.
Возвращает
boolean|Cake\Datasource\EntityInterface[]|Cake\ORM\ResultSetFalse при ошибке, список сущностей при успехе.
saveOrFail()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
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
table( string|null $table null )
Возвращает имя таблицы базы данных или устанавливает новое.
Устаревшее
3.4.0 Используйте setTable()/getTable() вместо этого.Параметры
- строка|null
$tableнеобязательный null - новое имя таблицы
Возвращает
строкаupdateAll()source public
updateAll( string|array|callable|Cake\Database\Expression\QueryExpression $fields , mixed $conditions )
Обновление всех соответствующих записей.
Параметры
- строка|массив|вызываемый объект|
Cake\Database\Expression\QueryExpression$fields - Хэш поля => нового значения.
- смешанный
$conditions Условие для использования, принимает все, что может принять Query::where().
Возвращает
целое числоКоличество возвращает количество затронутых строк.
Реализация
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. Ограничение будет использоваться только в том случае, если поле ограничения присутствует в данных, которые проверяются.
Параметры
- смешанный
$value - Значение столбца, которое будет проверяться на уникальность.
- массив
$options Массив параметров, необязательно содержащий ключ 'scope'. Также может быть контекстом валидации, если параметров нет.
- массив
$contextнеобязательный null - Либо контекст валидации, либо null.
Возвращает
логическое значениеИстина, если значение уникально, или ложь, если было передано нескалярное, неуникальное значение.
validationMethodExists()source protected
validationMethodExists( $method )
Методы, используемые из Cake\Event\EventDispatcherTrait
dispatchEvent()source public
dispatchEvent( string $name , array|null $data null , object|null $subject null )
Обёртка для создания и отправки событий.
Возвращает отправленное событие.
Параметры
- строка
$name - Имя события.
- массив|null
$dataнеобязательный null Любое значение, которое вы хотите передать с этим событием; слушатели могут его прочитать.
- объект|null
$subjectнеобязательный null Объект, к которому относится это событие ($this по умолчанию).
Возвращает
Cake\Event\EventeventManager()source public
eventManager( Cake\Event\EventManager $eventManager null )
Возвращает экземпляр менеджера Cake\Event\EventManager для этого объекта.
Вы можете использовать этот экземпляр для регистрации новых слушателей или обратных вызовов на события объекта, или для создания собственных событий и их вызова по желанию.
Устаревшее
3.5.0 Используйте getEventManager()/setEventManager() вместо этого.Параметры
-
Cake\Event\EventManager$eventManagerнеобязательный null - менеджер событий для установки
Возвращает
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 - менеджер событий для установки
Возвращает
$this
Методы, используемые из Cake\Datasource\RulesAwareTrait
checkRules()source public
checkRules( Cake\Datasource\EntityInterface $entity , string $operation RulesChecker::CREATE , ArrayObject|array|null $options null )
Возвращает значение, указывающее, соответствует ли переданная сущность всем правилам, хранящимся в проверяющем объекте правил.
Параметры
-
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', вам нужно создать метод в вашем подклассе таблицы следующим образом:
public function validationForSubscription($validator)
{
return $validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->requirePresence('username');
}
$validator = $this->getValidator('forSubscription'); Вы можете реализовать этот метод в validationDefault в вашем подклассе таблицы, если хотите иметь набор валидации, который применяется в случаях, когда другой набор не указан.
Если аргумент $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
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->validator('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() |
Магические методы, унаследованные от Cake\Event\EventDispatcherInterface
getEventManager() |
Подробности свойств
$_aliassource
protected string
Человеческое имя, присвоенное этому экземпляру. Может существовать несколько объектов, представляющих одну и ту же таблицу базы данных, используя разные псевдонимы.
$_associationssource
protected Cake\ORM\AssociationCollection
Контейнер ассоциаций для этой таблицы.
$_displayFieldsource
protected string
Имя поля, которое представляет удобочитаемое представление строки
$_registryAliassource
protected string
Ключ реестра, используемый для создания этого объекта таблицы
$_schemasource
protected Cake\Database\Schema\TableSchema
Объект схемы, содержащий описание полей этой таблицы
© 2005–2018 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.5/class-Cake.ORM.Table.html