Класс Таблица
Представляет отдельную таблицу базы данных.
Предоставляет методы для извлечения данных из неё и управляет ассоциациями этой таблицы с другими таблицами. Можно создавать несколько экземпляров этого класса для одной и той же таблицы базы данных с различными псевдонимами, что позволяет более богатым и выразительным образом обращаться к структуре вашей базы данных.
Извлечение данных
Основной способ извлечения данных — использование Table::find(). Смотрите этот метод для получения дополнительной информации.
Динамические методы поиска
В дополнение к стандартным методам поиска find($type), CakePHP предоставляет динамические методы поиска. Эти методы позволяют легко задавать основные условия. Например, чтобы отфильтровать пользователей по имени пользователя, вы бы вызвали
$query = $users->findByUsername('mark'); Также можно комбинировать условия по нескольким полям, используя либо Or, либо And:
$query = $users->findByUsernameOrEmail('mark', 'mark@example.org'); Массовое обновление/удаление
Можно использовать Table::updateAll() и Table::deleteAll() для массового обновления/удаления. Следует учитывать, что события не будут срабатывать для массовых обновлений/удалений.
События
Объекты Table испускают несколько событий в качестве событий жизненного цикла во время операций поиска, удаления и сохранения. Все события используют пакет событий CakePHP:
-
Model.beforeFindСрабатывает перед каждой операцией поиска. Остановив событие и передав возвращаемое значение, можно полностью пропустить операцию поиска. Любые изменения, внесённые в экземпляр $query, будут сохранены для последующего поиска. Параметр$primaryуказывает, является ли это основным запросом или ассоциированным запросом. -
Model.buildValidatorПозволяет слушателям изменять правила валидации для указанного валидатора. -
Model.buildRulesПозволяет слушателям изменять проверку правил, добавив новые правила. -
Model.beforeRulesСрабатывает перед тем, как сущность будет проверена с использованием средства проверки правил. Остановив это событие, вы можете вернуть окончательное значение операции проверки правил. -
Model.afterRulesСрабатывает после того, как правила были проверены на сущности. Остановив это событие, вы можете вернуть окончательное значение операции проверки правил. -
Model.beforeSaveСрабатывает перед сохранением каждой сущности. Остановка этого события приведёт к прерыванию операции сохранения. Когда событие остановлено, результат события будет возвращён. -
Model.afterSaveСрабатывает после сохранения сущности. -
Model.afterSaveCommitСрабатывает после завершения транзакции, в которой обернута операция сохранения. Также срабатывает для неатомных сохранений, где операции базы данных неявно подтверждаются. Событие срабатывает только для основной таблицы, на которой напрямую вызван save(). Событие не срабатывает, если транзакция инициирована до вызова save. -
Model.beforeDeleteСрабатывает перед удалением сущности. Остановкой этого события вы прервете операцию удаления. -
Model.afterDeleteСрабатывает после удаления сущности.
Обработчики событий
Вы можете подписаться на перечисленные выше события в своих классах таблиц, реализовав следующие методы жизненного цикла:
beforeFind(EventInterface $event, Query $query, ArrayObject $options, boolean $primary)beforeMarshal(EventInterface $event, ArrayObject $data, ArrayObject $options)afterMarshal(EventInterface $event, EntityInterface $entity, ArrayObject $options)buildValidator(EventInterface $event, Validator $validator, string $name)buildRules(RulesChecker $rules)beforeRules(EventInterface $event, EntityInterface $entity, ArrayObject $options, string $operation)afterRules(EventInterface $event, EntityInterface $entity, ArrayObject $options, bool $result, string $operation)beforeSave(EventInterface $event, EntityInterface $entity, ArrayObject $options)afterSave(EventInterface $event, EntityInterface $entity, ArrayObject $options)afterSaveCommit(EventInterface $event, EntityInterface $entity, ArrayObject $options)beforeDelete(EventInterface $event, EntityInterface $entity, ArrayObject $options)afterDelete(EventInterface $event, EntityInterface $entity, ArrayObject $options)afterDeleteCommit(EventInterface $event, EntityInterface $entity, ArrayObject $options)
См.: \Cake\Event\EventManager для справки по системе событий.
Ссылка: https://book.cakephp.org/4/en/orm/table-objects.html#event-list
Константы
-
stringBUILD_VALIDATOR_EVENT'Model.buildValidator'
Название события, отправляемого при построении валидатора.
-
stringDEFAULT_VALIDATOR'default'
Имя набора валидации по умолчанию.
-
stringIS_UNIQUE_CLASSIsUnique::class
Имя класса IsUnique, которое используется.
-
stringRULES_CLASSRulesChecker::class
Имя класса правил, которое используется.
-
stringVALIDATOR_PROVIDER_NAME'table'
Псевдоним, который назначается этому объекту в качестве валидаторов.
Резюме свойств
- $_alias protected
string|nullЧеловеческое имя, присвоенное этому экземпляру. Можно иметь несколько объектов, представляющих одну и ту же таблицу базы данных, используя различные псевдонимы.
- $_associations protected
Cake\ORM\AssociationCollectionКонтейнер ассоциаций для этой таблицы.
- $_behaviors protected
Cake\ORM\BehaviorRegistryBehaviorRegistry для этой таблицы
- $_connection protected
Cake\Database\Connection|nullЭкземпляр соединения
- $_displayField protected
string|string[]|nullИмя поля, представляющего удобочитаемое представление строки
- $_entityClass protected
stringИмя класса, представляющего отдельную строку для этой таблицы
- $_eventClass protected
stringИмя класса по умолчанию для новых объектов событий.
- $_eventManager protected
Cake\Event\EventManagerInterface|nullЭкземпляр Cake\Event\EventManager, который использует этот объект для отправки внутренних событий.
- $_primaryKey protected
string|string[]|nullИмя поля, представляющего первичный ключ в таблице
- $_registryAlias protected
string|nullКлюч реестра, используемый для создания объекта этой таблицы
- $_rulesChecker protected
Cake\Datasource\RulesCheckerПравила области, применяемые к сущностям, сохраняемым этой таблицей
- $_schema protected
Cake\Database\Schema\TableSchemaInterface|nullОбъект схемы, содержащий описание полей этой таблицы
- $_table protected
string|nullИмя таблицы, как она может быть найдена в базе данных
- $_validatorClass protected
stringКласс валидатора.
- $_validators protected
Cake\Validation\Validator[]Список объектов валидации, индексированных по имени
Краткое описание методов
-
__call() public
Обработка делегирования поведения + динамические поиск.
-
__construct() public
Инициализирует новый экземпляр
-
__debugInfo() public
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
-
__get() public
Возвращает ассоциацию, именованную по переданному значению, если она существует, в противном случае выбрасывает исключение.
-
__isset() public
Возвращает, существует ли ассоциация, именованная по переданному значению, для этой таблицы.
-
_deleteMany() protected
-
_dynamicFinder() protected
Предоставляет динамические методы findBy и findAllBy.
-
_executeTransaction() protected
Обрабатывает логику выполнения работника внутри транзакции.
-
_getFindOrCreateQuery() protected
Получает объект запроса для findOrCreate().
-
_initializeSchema() protected
Переопределите эту функцию, чтобы изменить схему, используемую этой таблицей. Эта функция вызывается только после извлечения схемы из базы данных. Если вы хотите предоставить свою собственную схему для этой таблицы, не затрагивая базу данных, вы можете переопределить schema() или ввести определения через этот метод.
-
_insert() protected
Вспомогательная функция для обработки вставки данных сущности в таблицу
-
_newId() protected
Генерирует значение первичного ключа для новой записи.
-
_onSaveSuccess() protected
Обрабатывает сохранение дочерних ассоциаций и выполнение логики afterSave после успешного сохранения сущности для этой таблицы.
-
_processDelete() protected
Выполняет операцию удаления.
-
_processFindOrCreate() protected
Выполняет фактический поиск и/или создание сущности на основе переданных параметров.
-
_processSave() protected
Выполняет фактическое сохранение сущности на основе переданных параметров.
-
_saveMany() 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" представляет собой отношение M-N.
-
buildRules() public
Возвращает объект RulesChecker после его модификации.
-
callFinder() public
Вызывает метод поиска непосредственно и применяет его к переданному запросу. Если запрос не передан, будет создан и возвращен новый запрос.
-
checkAliasLengths() protected
Проверяет, соответствуют ли все комбинации имени таблицы + имени столбца, используемые для запросов, максимально допустимой длине, разрешенной драйвером базы данных.
-
checkRules() public
Возвращает, соответствует ли переданная сущность всем правилам, хранящимся в проверяющем правила.
-
createValidator() protected
Создает валидатор, используя пользовательский метод внутри вашего класса.
-
defaultConnectionName() public static
Получить имя по умолчанию подключения.
-
delete() public
Удалить одну сущность.
-
deleteAll() public
Удаляет все записи, соответствующие заданным условиям.
-
deleteMany() public
Удаляет несколько сущностей таблицы.
-
deleteManyOrFail() public
Удаляет несколько сущностей таблицы.
-
deleteOrFail() public
Попытаться удалить сущность или выбросить PersistenceFailedException, если сущность новая, не имеет значения первичного ключа, проверки правил приложения завершились неудачей или удаление было прервано обратным вызовом.
-
dispatchEvent() public
Обертка для создания и отправки событий.
-
exists() public
Возвращает true, если в этом репозитории есть записи, соответствующие указанным условиям.
-
find() public
Создает новый запрос для этого репозитория и применяет некоторые значения по умолчанию, основанные на типе выбранного поиска.
-
findAll() public
Возвращает запрос в том виде, в котором он был передан.
-
findAssociation() protected
Возвращает объект ассоциации, сконфигурированный для указанного алиаса, если он есть.
-
findList() public
Настраивает объект запроса, чтобы результаты отображались как индексированный массив, что полезно в тех местах, где требуется список, например, для заполнения элементов выбора input.
-
findOrCreate() public
Находит существующую запись или создаёт новую.
-
findThreaded() public
Результаты для этого поиска будут вложенным массивом и подходят, если вы хотите использовать поле parent_id данных вашей модели для построения вложенных результатов.
-
get() public
Возвращает единственную запись после её нахождения по первичному ключу; если запись не найдена, этот метод генерирует исключение.
-
getAlias() public
Возвращает псевдоним таблицы.
-
getAssociation() public
Возвращает объект ассоциации, настроенный для указанного псевдонима.
-
getBehavior() public
Получает поведение из реестра.
-
getConnection() public
Возвращает экземпляр соединения.
-
getDisplayField() public
Возвращает поле отображения.
-
getEntityClass() public
Возвращает класс, используемый для гидратации строк для этой таблицы.
-
getEventManager() public
Возвращает экземпляр менеджера Cake\Event\EventManager для этого объекта.
-
getPrimaryKey() public
Возвращает имя поля первичного ключа.
-
getRegistryAlias() public
Возвращает ключ реестра таблицы, используемый для создания этого экземпляра таблицы.
-
getSaveOptionsBuilder() public
Получает экземпляр SaveOptionsBuilder.
-
getSchema() public
Возвращает объект схемы таблицы, описывающий свойства этой таблицы.
-
getTable() public
Возвращает имя таблицы базы данных.
-
getValidator() public
Возвращает правила валидации, помеченные тегом $name. Возможно наличие нескольких наборов правил с разными именами, что полезно, когда вам нужны различные правила при сохранении из разных процедур в вашей системе.
-
hasAssociation() public
Проверяет, существует ли определённая ассоциация в этом экземпляре Table.
-
hasBehavior() public
Проверяет, загружено ли поведение с данным псевдонимом.
-
hasField() public
Проверка наличия определённого поля/колонки в таблице.
-
hasFinder() public
Возвращает true, если поиск существует для таблицы.
-
hasMany() public
Создаёт новую ассоциацию HasMany между этой таблицей и целевой таблицей. Ассоциация "has many" — это отношение 1-N.
-
hasOne() public
Создаёт новую ассоциацию HasOne между этой таблицей и целевой таблицей. Ассоциация "has one" — это отношение 1-1.
-
hasValidator() public
Проверяет, установлен ли валидатор.
-
implementedEvents() public
Получение модельных обратных вызовов, к которым обращается эта таблица.
-
initialize() public
Инициализация экземпляра таблицы. Вызывается после конструктора.
-
loadInto() public
Загружает указанные ассоциации в переданную сущность или список сущностей, выполняя дополнительные запросы в базе данных и объединяя результаты в соответствующие свойства.
-
marshaller() public
Получает объект, используемый для преобразования данных массива в объекты.
-
newEmptyEntity() public
Создаёт новый объект сущности.
-
newEntities() public
Создаёт список сущностей + связанных сущностей из массива.
-
newEntity() public
Создаёт новую сущность + связанные сущности из массива.
-
patchEntities() public
Объединяет каждый из переданных элементов в сущности, найденные в
$entities, учитывая настроенные доступные поля в сущностях. Объединение выполняется путём сопоставления первичного ключа в каждом из элементов в$dataи$entities. -
patchEntity() public
Объединяет переданную
$dataв$entity, учитывая настроенные доступные поля в сущности. Возвращает ту же сущность после изменения. -
query() public
Создаёт новый экземпляр Query для таблицы.
-
removeBehavior() public
Удаляет поведение из реестра поведения этой таблицы.
-
rulesChecker() public
Возвращает RulesChecker для этого экземпляра.
-
save() public
Сохраняет сущность на основе полей, помеченных как изменённые, и возвращает ту же сущность после успешного сохранения или false в случае ошибки.
-
saveMany() public
Сохраняет множество сущностей таблицы.
-
saveManyOrFail() public
Сохраняет множество сущностей таблицы.
-
saveOrFail() public
Попытаться сохранить сущность или бросить PersistenceFailedException, если проверки правил приложения завершились неудачей, сущность содержит ошибки или сохранение было прервано обратным вызовом.
-
setAlias() public
Устанавливает псевдоним таблицы.
-
setConnection() public
Устанавливает экземпляр соединения.
-
setDisplayField() public
Устанавливает поле отображения.
-
setEntityClass() public
Устанавливает класс, используемый для гидратации строк для этой таблицы.
-
setEventManager() public
Возвращает экземпляр Cake\Event\EventManagerInterface для этого объекта.
-
setPrimaryKey() public
Устанавливает имя поля первичного ключа.
-
setRegistryAlias() public
Устанавливает ключ реестра таблицы, используемый для создания экземпляра этой таблицы.
-
setSchema() public
Устанавливает объект схемы таблицы, описывающий свойства этой таблицы.
-
setTable() public
Устанавливает имя таблицы базы данных.
-
setValidator() public
Этот метод сохраняет пользовательский валидатор под заданным именем.
-
subquery() public
Создаёт новый экземпляр Query::subquery() для таблицы.
-
updateAll() public
Обновить все соответствующие записи.
-
validateUnique() public
Метод валидации, используемый для проверки уникальности значения для столбца. Он предназначен для использования с API валидации и не должен вызываться напрямую.
-
validationDefault() public
Возвращает объект валидатора по умолчанию. Подклассы могут переопределить эту функцию, чтобы добавить набор валидации по умолчанию в объект валидатора.
-
validationMethodExists() protected
Проверяет существование метода валидации.
Краткое описание методов
__call() public
__call(string $method, array $args): mixed
Обрабатывает делегирование поведения + динамические finders.
Если ваша таблица использует какие-либо поведения, вы можете вызывать их так, как будто они находятся в объекте таблицы.
Параметры
-
string$method имя вызываемого метода
-
array$args Список аргументов, переданных функции
Возвращает
mixedИсключения
BadMethodCallException__construct() public
__construct(array $config = [])
Инициализирует новый экземпляр
Массив $config понимает следующие ключи:
- table: Имя таблицы базы данных для представления
- alias: Псевдоним, который будет присвоен этой таблице (по умолчанию - имя таблицы)
- connection: Экземпляр соединения для использования
- entityClass: Полностью определенное имя класса сущности, который будет представлять строки в этой таблице.
- schema: Объект \Cake\Database\Schema\TableSchemaInterface или массив, который может быть передан ему.
- eventManager: Экземпляр менеджера событий для использования во внутренних событиях
- behaviors: BehaviorRegistry. Как правило, не используется за пределами тестов.
- associations: Экземпляр AssociationCollection.
- validator: Экземпляр Validator, который назначается в качестве набора валидации "по умолчанию", или ассоциативный массив, где ключ - имя набора валидации, а значение - экземпляр Validator.
Параметры
-
array$config optional Список параметров для этой таблицы
__debugInfo() public
__debugInfo(): array
Возвращает массив, который может быть использован для описания внутреннего состояния этого объекта.
Возвращает
array__get() public
__get(string $property): Cake\ORM\Association
Возвращает ассоциацию, названную в соответствии с переданным значением, если она существует, в противном случае выдает исключение.
Параметры
-
string$property имя ассоциации
Возвращает
Cake\ORM\AssociationИсключения
RuntimeExceptionесли ассоциация с таким именем не существует
__isset() public
__isset(string $property): bool
Возвращает, существует ли ассоциация с именем, указанным в переданном значении, для этой таблицы.
Параметры
-
string$property имя ассоциации
Возвращает
bool_deleteMany() protected
_deleteMany(arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface $entities, arrayArrayAccess $options = []): Cake\Datasource\EntityInterface|null
Параметры
-
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface$entities Сущности для удаления.
-
arrayArrayAccess$options optional Используемые параметры.
Возвращает
Cake\Datasource\EntityInterface|null_dynamicFinder() protected
_dynamicFinder(string $method, array $args): Cake\ORM\Query
Предоставляет динамические методы findBy и findAllBy.
Параметры
-
string$method Имя метода, который был вызван.
-
array$args Список аргументов, переданных функции.
Возвращает
Cake\ORM\QueryИсключения
BadMethodCallExceptionкогда отсутствуют аргументы или когда сочетаются and & or.
_executeTransaction() protected
_executeTransaction(callable $worker, bool $atomic = true): mixed
Обрабатывает логику выполнения работника внутри транзакции.
Параметры
-
callable$worker Работник, который будет работать внутри транзакции.
-
bool$atomic optional Выполнять ли работника внутри транзакции базы данных.
Возвращает
mixed_getFindOrCreateQuery() protected
_getFindOrCreateQuery(array|callableCake\ORM\Query $search): Cake\ORM\Query
Получает объект запроса для findOrCreate().
Параметры
-
array|callableCake\ORM\Query$search Критерии для поиска существующих записей.
Возвращает
Cake\ORM\Query_initializeSchema() protected
_initializeSchema(Cake\Database\Schema\TableSchemaInterface $schema): Cake\Database\Schema\TableSchemaInterface
Переопределите эту функцию, чтобы изменить схему, используемую этой таблицей. Эта функция вызывается только после извлечения схемы из базы данных. Если вы хотите предоставить свою собственную схему для этой таблицы, не затрагивая базу данных, вы можете переопределить schema() или внедрить определения через этот метод.
Пример:
protected function _initializeSchema(\Cake\Database\Schema\TableSchemaInterface $schema) {
$schema->setColumnType('preferences', 'json');
return $schema;
} Параметры
-
Cake\Database\Schema\TableSchemaInterface$schema Определение таблицы, извлеченное из базы данных.
Возвращает
Cake\Database\Schema\TableSchemaInterface_insert() protected
_insert(Cake\Datasource\EntityInterface $entity, array $data): Cake\Datasource\EntityInterface|false
Вспомогательная функция для обработки вставки данных сущности в таблицу
Параметры
-
Cake\Datasource\EntityInterface$entity сущность, из которой были извлечены данные $data
-
array$data фактические данные, которые необходимо сохранить
Возвращает
Cake\Datasource\EntityInterface|falseИсключения
RuntimeExceptionесли не все первичные ключи были предоставлены или могли быть сгенерированы, когда таблица имеет составные первичные ключи. Или когда таблица не имеет первичного ключа.
_newId() protected
_newId(string[] $primary): string|null
Генерирует значение первичного ключа для новой записи.
По умолчанию используется система типов для генерации нового значения первичного ключа, если это возможно. Вы можете переопределить этот метод, если у вас есть особые требования к генерации идентификаторов.
Примечание: ORM не будет генерировать значения первичных ключей для составных первичных ключей. Вы можете переопределить _newId() в своем классе таблицы.
Параметры
-
string[]$primary Столбцы первичного ключа, для которых необходимо получить новый ID.
Возвращает
string|null_onSaveSuccess() protected
_onSaveSuccess(Cake\Datasource\EntityInterface $entity, ArrayObject $options): bool
Обрабатывает сохранение дочерних ассоциаций и выполняет логику afterSave после того, как сущность для этой таблицы была успешно сохранена.
Параметры
-
Cake\Datasource\EntityInterface$entity сущность для сохранения
-
ArrayObject$options параметры для использования в операции сохранения
Возвращает
boolИсключения
Cake\ORM\Exception\RolledbackTransactionExceptionЕсли транзакция прерывается в событии afterSave.
_processDelete() protected
_processDelete(Cake\Datasource\EntityInterface $entity, ArrayObject $options): bool
Выполняет операцию удаления.
Удаляет предоставленную сущность. Удаляет строки из любых зависимых ассоциаций и очищает таблицы объединения для ассоциаций BelongsToMany.
Параметры
-
Cake\Datasource\EntityInterface$entity Сущность для удаления.
-
ArrayObject$options Параметры для удаления.
Возвращает
boolИсключения
InvalidArgumentExceptionесли нет значений первичного ключа переданной сущности
_processFindOrCreate() protected
_processFindOrCreate(array|callableCake\ORM\Query $search, callable|null $callback = null, array $options = []): Cake\Datasource\EntityInterface|array
Выполняет фактический поиск и/или создание сущности на основе переданных параметров.
Параметры
-
array|callableCake\ORM\Query$search Критерии для поиска существующей записи или вызываемый объект, который настроит запрос поиска.
-
callable|null$callback optional Обратный вызов, который будет вызван для вновь созданных сущностей. Этот обратный вызов будет вызван до сохранения сущности.
-
array$options optional Параметры для использования при сохранении.
Возвращает
Cake\Datasource\EntityInterface|arrayИсключения
Cake\ORM\Exception\PersistenceFailedExceptionКогда сущность не может быть сохранена
InvalidArgumentException_processSave() protected
_processSave(Cake\Datasource\EntityInterface $entity, ArrayObject $options): Cake\Datasource\EntityInterface|false
Выполняет фактическое сохранение сущности на основе переданных опций.
Параметры
-
Cake\Datasource\EntityInterface$entity сущность, которую нужно сохранить
-
ArrayObject$options опции для операции сохранения
Возвращает
Cake\Datasource\EntityInterface|falseИсключения
RuntimeExceptionПри отсутствии некоторых первичных ключей у сущности.
Cake\ORM\Exception\RolledbackTransactionExceptionЕсли транзакция прервана в событии afterSave.
_saveMany() protected
_saveMany(arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface $entities, arrayArrayAccessCake\ORM\SaveOptionsBuilder $options = []): arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface
Параметры
-
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface$entities Сущности для сохранения.
-
arrayArrayAccessCake\ORM\SaveOptionsBuilder$options optional Опции, используемые при вызове Table::save() для каждой сущности.
Возвращает
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterfaceИсключения
Cake\ORM\Exception\PersistenceFailedExceptionЕсли сущность не удалось сохранить.
ExceptionЕсли сущность не удалось сохранить.
_setFieldMatchers() protected
_setFieldMatchers(array $options, string[] $keys): array
Из массива опций проверяет, являются ли ключи, описанные в $keys, массивами, и изменяет значения на замыкания, которые будут конкатенировать каждую из свойств в массиве значений при передаче строки.
Это вспомогательная функция, используемая для форматировщиков результатов, которые могут принимать составные ключи при сравнении значений.
Параметры
-
array$options исходные опции, переданные в поиск
-
string[]$keys ключи для проверки в $options для создания соответствий из связанных значений
Возвращает
array_transactionCommitted() protected
_transactionCommitted(bool $atomic, bool $primary): bool
Проверяет, выполнил ли вызывающий метод операцию подтверждения транзакции.
Параметры
-
bool$atomic Истина, если использовалась атомарная транзакция.
-
bool$primary Истина, если использовался первичный ключ.
Возвращает
bool_update() protected
_update(Cake\Datasource\EntityInterface $entity, array $data): Cake\Datasource\EntityInterface|false
Вспомогательная функция для обработки обновления данных сущности в таблице
Параметры
-
Cake\Datasource\EntityInterface$entity сущностный объект, из которого были извлечены данные
-
array$data Фактические данные, которые необходимо сохранить
Возвращает
Cake\Datasource\EntityInterface|falseИсключения
InvalidArgumentExceptionПри отсутствии данных первичного ключа.
addAssociations() public
addAssociations(array $params): $this
Настройка нескольких ассоциаций.
Принимает массив, содержащий набор имён таблиц, индексированных по типу ассоциации:
$this->Posts->addAssociations([
'belongsTo' => [
'Users' => ['className' => 'App\Model\Table\UsersTable']
],
'hasMany' => ['Comments'],
'belongsToMany' => ['Tags']
]); Каждый тип ассоциации поддерживает несколько ассоциаций, где ключи являются псевдонимами, а значения — данными конфигурации ассоциации. Если используются числовые ключи, значения будут обрабатываться как псевдонимы ассоциаций.
Параметры
-
array$params Набор ассоциаций для привязки (индексированный по типу ассоциации)
Возвращает
$thisСм. также
\Cake\ORM\Table::hasOne()
\Cake\ORM\Table::hasMany()
\Cake\ORM\Table::belongsToMany()
addBehavior() public
addBehavior(string $name, array $options = []): $this
Добавление поведения.
Добавляет поведение в коллекцию поведения этой таблицы. Поведения обеспечивают простой способ создания горизонтально переиспользуемых функций, которые могут предоставлять функциональность, подобную трейтам, и позволяют прослушивать события.
Пример:
Загрузка поведения с некоторыми настройками.
$this->addBehavior('Tree', ['parent' => 'parentId']); Поведения обычно загружаются во время Table::initialize().
Параметры
-
string$name Имя поведения. Может быть краткой ссылкой на класс.
-
array$options optional Опции для использования поведения.
Возвращает
$thisИсключения
RuntimeExceptionЕсли поведение перегружается.
См. также
addBehaviors() public
addBehaviors(array $behaviors): $this
Добавляет массив поведений в коллекцию поведений таблицы.
Пример:
$this->addBehaviors([
'Timestamp',
'Tree' => ['level' => 'level'],
]); Параметры
-
array$behaviors Все загружаемые поведения.
Возвращает
$thisИсключения
RuntimeExceptionЕсли поведение перегружается.
aliasField() public
aliasField(string $field): string
Присваивает псевдоним полю с текущим псевдонимом таблицы.
Если поле уже имеет псевдоним, это приведет к ничегонеделанию.
Параметры
-
string$field Поле для присвоения псевдонима.
Возвращает
stringassociations() public
associations(): Cake\ORM\AssociationCollection
Получение коллекции ассоциаций для этой таблицы.
Возвращает
Cake\ORM\AssociationCollectionbehaviors() public
behaviors(): Cake\ORM\BehaviorRegistry
Возвращает реестр поведения для этой таблицы.
Возвращает
Cake\ORM\BehaviorRegistrybelongsTo() public
belongsTo(string $associated, array $options = []): Cake\ORM\Association\BelongsTo
Создаёт новую ассоциацию BelongsTo между этой таблицей и целевой таблицей. Ассоциация «belongs to» — это отношение N-1, где эта таблица — сторона N, и для каждого записей в этой таблице существует единственная связанная запись в целевой таблице.
Целевая таблица может быть определена по ее имени, которое предоставлено в первом аргументе, или вы можете либо передать объект для инициализации, либо напрямую передать экземпляр объекта.
Массив опций принимает следующие ключи:
- className: Имя класса объекта целевой таблицы
- targetTable: Экземпляр объекта таблицы, который будет использоваться в качестве целевой таблицы
- foreignKey: Имя поля, используемого в качестве внешнего ключа, если ложно, внешний ключ не будет использован
- conditions: массив с перечнем условий для фильтрации объединения
- joinType: Тип объединения (например, INNER)
- strategy: Стратегия загрузки. Поддерживаются 'join' и 'select'.
- finder: Метод поиска для загрузки записей из этой ассоциации. По умолчанию — 'all'. Когда стратегия — 'join', будут использованы только поля, вложения и условия where из поиска.
Этот метод вернёт объект ассоциации, который был создан.
Параметры
-
string$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
-
array$options optional список опций для настройки определения ассоциации
Возвращает
Cake\ORM\Association\BelongsTobelongsToMany() public
belongsToMany(string $associated, array $options = []): Cake\ORM\Association\BelongsToMany
Создаёт новую ассоциацию BelongsToMany между этой таблицей и целевой таблицей. Ассоциация "belongs to many" — это отношение М-Н.
Целевую таблицу можно определить по её имени, указанному в первом аргументе, или указать имя класса для создания экземпляра, либо непосредственно экземпляр класса.
Массив параметров принимает следующие ключи:
- 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 optional список параметров для конфигурации определения ассоциации
Возвращает
Cake\ORM\Association\BelongsToManybuildRules() public
buildRules(Cake\Datasource\RulesChecker $rules): Cake\ORM\RulesChecker
Возвращает объект RulesChecker после модификации предоставленного.
Подклассы должны переопределять этот метод для инициализации правил, применяемых к сущностям, сохранённым этим экземпляром.
Параметры
-
Cake\Datasource\RulesChecker$rules Объект правил, подлежащий модификации.
Возвращает
Cake\ORM\RulesCheckercallFinder() public
callFinder(string $type, Cake\ORM\Query $query, array $options = []): Cake\ORM\Query
Вызывает метод поиска непосредственно и применяет его к переданному запросу. Если запрос не передан, будет создан и возвращён новый.
Параметры
-
string$type имя вызываемого метода поиска
-
Cake\ORM\Query$query Объект запроса, к которому применяются параметры поиска
-
array$options optional Список параметров, передаваемых методу поиска
Возвращает
Cake\ORM\QueryИсключения
BadMethodCallExceptioncheckAliasLengths() protected
checkAliasLengths(): void
Проверяет, подходят ли все комбинации имён таблиц + имён столбцов, используемые для запросов, к максимально допустимой длине, разрешённой драйвером базы данных.
Возвращает
voidИсключения
RuntimeExceptionПри слишком большой длине комбинации псевдонимов
checkRules() public
checkRules(Cake\Datasource\EntityInterface $entity, string $operation = RulesChecker::CREATE, ArrayObject|array|null $options = null): bool
Возвращает, соответствует ли переданная сущность всем правилам, хранящимся в проверяющем объекте правил.
Параметры
-
Cake\Datasource\EntityInterface$entity Сущность, проверка валидности которой требуется.
-
string$operation optional Выполняемая операция. 'create', 'update' или 'delete'.
-
ArrayObject|array|null$options optional Параметры, передаваемые правилам.
Возвращает
boolcreateValidator() protected
createValidator(string $name): Cake\Validation\Validator
Создаёт валидатор, используя пользовательский метод внутри вашего класса.
Этот метод используется только для создания нового валидатора и не сохраняет его в вашем объекте. Если вы хотите создать и повторно использовать валидаторы, используйте метод getValidator() вместо этого.
Параметры
-
string$name Имя набора валидации, который нужно создать.
Возвращает
Cake\Validation\ValidatorИсключения
RuntimeExceptiondefaultConnectionName() public static
defaultConnectionName(): string
Получить имя подключения по умолчанию.
Этот метод используется для получения имени подключения по умолчанию, если экземпляр создан через TableLocator без указания подключения.
Возвращает
stringСм. также
delete() public
delete(Cake\Datasource\EntityInterface $entity, arrayArrayAccess $options = []): bool
Удалить одну сущность.
Для ассоциаций HasMany и HasOne записи будут удалены в зависимости от параметра dependent. Записи в таблице соединения в ассоциациях BelongsToMany всегда удаляются. Вы можете использовать параметр cascadeCallbacks при определении ассоциаций, чтобы изменить способ удаления связанных данных.
Параметры
-
atomicПо умолчанию true. Если true, удаление происходит в рамках транзакции. -
checkRulesПо умолчанию true. Проверка правил удаления перед удалением записи.
События
-
Model.beforeDeleteСрабатывает перед выполнением удаления. Если остановлен, удаление будет прервано. Получает событие, сущность и параметры. -
Model.afterDeleteСрабатывает после успешного удаления. Получает событие, сущность и параметры. -
Model.afterDeleteCommitСрабатывает после подтверждения транзакции при атомарном удалении. Получает событие, сущность и параметры.
Аргумент параметров будет преобразован в экземпляр \ArrayObject на время выполнения обратных вызовов, что позволит слушателям изменять параметры, используемые в операции удаления.
Параметры
-
Cake\Datasource\EntityInterface$entity Сущность для удаления.
-
arrayArrayAccess$options optional Параметры удаления.
Возвращает
booldeleteAll() public
deleteAll(mixed $conditions): int
Удаляет все записи, соответствующие заданным условиям.
Этот метод не запускает события beforeDelete/afterDelete. Если вам нужны эти события, сначала загрузите коллекцию записей и удалите их.
Этот метод не выполняется для cascade атрибута ассоциаций. Для каскадного удаления используйте внешние ключи базы данных + правила ON CASCADE.
Параметры
-
mixed$conditions
Возвращает
intdeleteMany() public
deleteMany(arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface $entities, arrayArrayAccess $options = []): arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface|false
Удаляет несколько сущностей таблицы.
Записи будут удалены в рамках транзакции, которая будет отменена, если хотя бы одна запись не будет удалена из-за невалидной проверки или ошибки базы данных.
Параметры
-
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface$entities Сущности для удаления.
-
arrayArrayAccess$options optional Параметры, используемые при вызове Table::save() для каждой сущности.
Возвращает
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface|falseСм. также
deleteManyOrFail() public
deleteManyOrFail(arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface $entities, arrayArrayAccess $options = []): arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface
Удаляет несколько сущностей таблицы.
Записи будут удалены в рамках транзакции, которая будет отменена, если хотя бы одна запись не будет удалена из-за невалидной проверки или ошибки базы данных.
Параметры
-
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface$entities Сущности для удаления.
-
arrayArrayAccess$options optional Параметры, используемые при вызове Table::save() для каждой сущности.
Возвращает
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterfaceИсключения
Cake\ORM\Exception\PersistenceFailedExceptionСм. также
deleteOrFail() public
deleteOrFail(Cake\Datasource\EntityInterface $entity, arrayArrayAccess $options = []): true
Попытка удалить сущность или выбросить исключение PersistenceFailedException, если сущность является новой, не имеет значения первичного ключа, проверка правил приложения не пройдена или удаление было прервано обратным вызовом.
Parameters
-
Cake\Datasource\EntityInterface$entity Сущность для удаления.
-
arrayArrayAccess$options optional Параметры для удаления.
Returns
trueThrows
Cake\ORM\Exception\PersistenceFailedExceptionSee Also
dispatchEvent() public
dispatchEvent(string $name, array|null $data = null, object|null $subject = null): Cake\Event\EventInterface
Обёртка для создания и отправки событий.
Возвращает отправленное событие.
Parameters
-
string$name Имя события.
-
array|null$data optional Любое значение, которое вы хотите передать с этим событием, чтобы оно могло быть прочитано слушателями.
-
object|null$subject optional Объект, к которому относится это событие (по умолчанию $this).
Returns
Cake\Event\EventInterfaceexists() public
exists(array $conditions): bool
Возвращает true, если в этом репозитории есть запись, соответствующая указанным условиям.
Parameters
-
array$conditions
Returns
boolfind() public
find(string $type = 'all', array $options = []): Cake\ORM\Query
Создаёт новый запрос для этого репозитория и применяет некоторые значения по умолчанию на основе типа выбранного поиска.
Событие 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']
]); Использование интерфейса builder:
$query = $articles->find() ->where(['published' => 1]) ->limit(10) ->contain(['Users', 'Comments']);
Вызов finders
Метод find() является точкой входа для пользовательских методов поиска. Вы можете вызвать поиск, указав тип:
$query = $articles->find('published'); Вызовет метод findPublished.
Parameters
-
string$type optional тип запроса для выполнения
-
array$options optional Массив, который будет передан в Query::applyOptions()
Returns
Cake\ORM\QueryfindAll() public
findAll(Cake\ORM\Query $query, array $options): Cake\ORM\Query
Возвращает запрос как есть.
По умолчанию findAll() не применяет никаких условий, вы можете переопределить этот метод в подклассах, чтобы изменить, как работает find('all').
Parameters
-
Cake\ORM\Query$query Запрос для поиска.
-
array$options Параметры для использования при поиске.
Returns
Cake\ORM\QueryfindAssociation() protected
findAssociation(string $name): Cake\ORM\Association|null
Возвращает объект ассоциации, настроенный для указанного псевдонима, если таковой существует.
Аргумент имени также поддерживает точечную нотацию для доступа к более глубоким ассоциациям.
$users = $this->getAssociation('Articles.Comments.Users'); Parameters
-
string$name Псевдоним, используемый для ассоциации.
Returns
Cake\ORM\Association|nullfindList() public
findList(Cake\ORM\Query $query, array $options): Cake\ORM\Query
Настраивает объект запроса так, чтобы результаты отображались как индексированный массив, что полезно в любом месте, где вам нужен список, например, для заполнения списков выбора ввода.
При вызове этого поиска передаваемые поля используются для определения того, что должно использоваться в качестве ключа массива, значения и, необязательно, для группировки результатов. По умолчанию первичный ключ для модели используется в качестве ключа, а поле отображения — в качестве значения.
Результаты этого поиска будут иметь следующий вид:
[ 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'
]); valueField также может быть массивом, в этом случае вы также можете указать параметр valueSeparator для управления тем, как значения будут объединяться:
$table->find('list', [
'valueField' => ['first_name', 'last_name'],
'valueSeparator' => ' | ',
]); Результаты этого поиска будут иметь следующий вид:
[ 1 => 'John | Doe', 2 => 'Steve | Smith' ]
Результаты могут быть объединены в более крупные группы, если они имеют общее свойство, вы можете настроить свойство для использования для группировки, установив 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'
]
] Parameters
-
Cake\ORM\Query$query Запрос для поиска.
-
array$options Параметры для поиска.
Returns
Cake\ORM\QueryfindOrCreate() public
findOrCreate(array|callableCake\ORM\Query $search, callable|null $callback = null, array $options = []): Cake\Datasource\EntityInterface
Находит существующую запись или создаёт новую.
Будет выполнен поиск find() для поиска существующей записи с использованием атрибутов, определённых в $search. Если записи соответствуют условиям, будет возвращена первая запись.
Если запись не найдена, будет создана новая сущность со свойствами $search. Если предоставлен обратный вызов, он будет вызван, позволяя вам определить дополнительные значения по умолчанию. Новая сущность будет сохранена и возвращена.
Если ваши условия поиска требуют пользовательской сортировки, ассоциаций или условий, то параметр $search может быть вызываемым объектом, который принимает Query в качестве аргумента, или объект \Cake\ORM\Query, переданный в качестве параметра $search. Это позволит вам настроить результаты поиска.
Параметры
Массив параметров передаётся методу save за исключением следующих ключей:
- atomic: Выполнять ли методы для поиска, сохранения и обратных вызовов внутри транзакции базы данных (по умолчанию: true)
- defaults: Использовать ли критерии поиска в качестве значений по умолчанию для новой сущности (по умолчанию: true)
Parameters
-
array|callableCake\ORM\Query$search Критерии для поиска существующих записей. Обратите внимание, что при передаче объекта запроса вам придётся использовать второй аргумент метода для изменения данных сущности перед сохранением.
-
callable|null$callback optional Обратный вызов, который будет вызван для вновь созданных сущностей. Этот обратный вызов будет вызван до сохранения сущности.
-
array$options optional Параметры для использования при сохранении.
Returns
Cake\Datasource\EntityInterfaceThrows
Cake\ORM\Exception\PersistenceFailedExceptionКогда сущность не может быть сохранена
findThreaded() public
findThreaded(Cake\ORM\Query $query, array $options): Cake\ORM\Query
Результаты этого поиска будут представлять собой вложенный массив и подходят, если вы хотите использовать поле parent_id данных вашей модели для построения вложенных результатов.
Значения, принадлежащие родительской строке на основе их значения parent_id, будут рекурсивно вложены внутри значений родительской строки с использованием свойства children
Вы можете настроить поля, используемые для вложения результатов, по умолчанию используются поля первичного ключа и parent_id. Если вы хотите изменить эти значения по умолчанию, вам необходимо указать ключи keyField, parentField или nestingKey в $options:
$table->find('threaded', [
'keyField' => 'id',
'parentField' => 'ancestor_id'
'nestingKey' => 'children'
]); Parameters
-
Cake\ORM\Query$query Запрос для поиска.
-
array$options Параметры для поиска.
Returns
Cake\ORM\Queryget() public
get(mixed $primaryKey, array $options = []): Cake\Datasource\EntityInterface
Возвращает одну запись после поиска по её первичному ключу, если запись не найдена, этот метод вызывает исключение.
Использование
Получение статьи и некоторых связей:
$article = $articles->get(1, ['contain' => ['Users', 'Comments']]);
Parameters
-
mixed$primaryKey Значение первичного ключа для поиска.
-
array$options optional Параметры, принимаемые
Table::find().
Returns
Cake\Datasource\EntityInterfaceThrows
Cake\Datasource\Exception\RecordNotFoundExceptionесли запись с таким id не найдена
Cake\Datasource\Exception\InvalidPrimaryKeyExceptionКогда $primaryKey имеет неправильное количество элементов.
See Also
getAlias() public
getAlias(): string
Возвращает псевдоним таблицы.
Возвращает
stringgetAssociation() public
getAssociation(string $name): Cake\ORM\Association
Возвращает объект ассоциации, настроенный для указанного псевдонима.
Аргумент name также поддерживает синтаксис точек для доступа к более глубоким ассоциациям.
$users = $this->getAssociation('Articles.Comments.Users'); Обратите внимание, что этот метод требует наличия ассоциации, в противном случае он выбросит исключение. Если вы не уверены, используйте hasAssociation() перед вызовом этого метода.
Параметры
-
string$name Псевдоним, используемый для ассоциации.
Возвращает
Cake\ORM\AssociationИсключения
InvalidArgumentExceptiongetBehavior() public
getBehavior(string $name): Cake\ORM\Behavior
Получить поведение из реестра.
Параметры
-
string$name Псевдоним поведения, который нужно получить из реестра.
Возвращает
Cake\ORM\BehaviorИсключения
InvalidArgumentExceptionЕсли поведение не существует.
getConnection() public
getConnection(): Cake\Database\Connection
Возвращает экземпляр соединения.
Возвращает
Cake\Database\ConnectiongetDisplayField() public
getDisplayField(): string|string[]|null
Возвращает поле отображения.
Возвращает
string|string[]|nullgetEntityClass() public
getEntityClass(): string
Возвращает класс, используемый для гидратации строк для этой таблицы.
Возвращает
stringgetEventManager() public
getEventManager(): Cake\Event\EventManagerInterface
Возвращает экземпляр менеджера Cake\Event\EventManager для этого объекта.
Вы можете использовать этот экземпляр для регистрации любых новых слушателей или обратных вызовов для событий объекта, или создавать свои собственные события и вызывать их по своему усмотрению.
Возвращает
Cake\Event\EventManagerInterfacegetPrimaryKey() public
getPrimaryKey(): string|string[]
Возвращает имя поля первичного ключа.
Возвращает
string|string[]getRegistryAlias() public
getRegistryAlias(): string
Возвращает ключ реестра таблицы, используемый для создания этого экземпляра таблицы.
Возвращает
stringgetSaveOptionsBuilder() public
getSaveOptionsBuilder(array $options = []): Cake\ORM\SaveOptionsBuilder
Получает экземпляр SaveOptionsBuilder.
Параметры
-
array$options optional Параметры для анализа билдером.
Возвращает
Cake\ORM\SaveOptionsBuildergetSchema() public
getSchema(): Cake\Database\Schema\TableSchemaInterface
Возвращает объект схемы таблицы, описывающий свойства этой таблицы.
Возвращает
Cake\Database\Schema\TableSchemaInterfacegetTable() public
getTable(): string
Возвращает имя таблицы базы данных.
Это может включать имя схемы базы данных, если оно задано с использованием setTable().
Возвращает
stringgetValidator() public
getValidator(string|null $name = null): Cake\Validation\Validator
Возвращает правила проверки, помеченные с помощью $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 optional Имя набора проверки, который нужно вернуть.
Возвращает
Cake\Validation\ValidatorhasAssociation() public
hasAssociation(string $name): bool
Проверяет, существует ли определённая ассоциация в этом экземпляре Table.
Аргумент name также поддерживает синтаксис точек для доступа к более глубоким ассоциациям.
$hasUsers = $this->hasAssociation('Articles.Comments.Users'); Параметры
-
string$name Псевдоним, используемый для ассоциации.
Возвращает
boolhasBehavior() public
hasBehavior(string $name): bool
Проверяет, загружено ли поведение с данным псевдонимом.
Параметры
-
string$name Псевдоним поведения для проверки.
Возвращает
boolhasField() public
hasField(string $field): bool
Проверка наличия определённого поля/колонки в таблице.
Делегирует запрос к объекту схемы и проверяет наличие колонки, используя экземпляр Schema\Table.
Параметры
-
string$field Поле для проверки.
Возвращает
boolhasFinder() public
hasFinder(string $type): bool
Возвращает true, если поиск существует для таблицы
Параметры
-
string$type имя поиска для проверки
Возвращает
boolhasMany() public
hasMany(string $associated, array $options = []): Cake\ORM\Association\HasMany
Создаёт новую ассоциацию HasMany между этой таблицей и целевой таблицей. Ассоциация "has many" - это отношение 1-N.
Целевая таблица может быть определена по её имени, которое указано в первом аргументе, или вы можете передать имя класса для создания или экземпляр класса непосредственно.
Массив options принимает следующие ключи:
- 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'.
Этот метод вернёт объект ассоциации, который был создан.
Параметры
-
string$associated Псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
-
array$options optional Список параметров для настройки определения ассоциации
Возвращает
Cake\ORM\Association\HasManyhasOne() public
hasOne(string $associated, array $options = []): Cake\ORM\Association\HasOne
Создаёт новую ассоциацию 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 из поиска.
Этот метод вернёт объект ассоциации, который был создан.
Параметры
-
string$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
-
array$options optional список опций для настройки определения ассоциации
Возвращаемое значение
Cake\ORM\Association\HasOnehasValidator() public
hasValidator(string $name): bool
Проверяет, установлен ли валидатор.
Параметры
-
string$name Имя валидатора.
Возвращаемое значение
boolimplementedEvents() public
implementedEvents(): array
Получение колбэков модели, к которым эта таблица проявляет интерес.
Реализация стандартных методов предполагает, что класс таблицы заинтересован в связанных событиях.
Переопределите этот метод, если вам нужно добавить нестандартные слушатели событий. Или если вы хотите, чтобы ваша таблица прослушивала нестандартные события.
Стандартное отображение методов:
- Model.beforeMarshal => beforeMarshal
- Model.afterMarshal => afterMarshal
- 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
Возвращаемое значение
arrayinitialize() public
initialize(array $config): void
Инициализация экземпляра таблицы. Вызывается после конструктора.
Вы можете использовать этот метод для определения ассоциаций, добавления бихевиоров, определения валидации и выполнения любой другой необходимой инициализации.
public function initialize(array $config)
{
$this->belongsTo('Users');
$this->belongsToMany('Tagging.Tags');
$this->setPrimaryKey('something_else');
} Параметры
-
array$config Параметры конфигурации, переданные в конструктор
Возвращаемое значение
voidloadInto() public
loadInto(Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface> $entities, array $contain): Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>
Загружает указанные ассоциации в переданную сущность или список сущностей, выполняя дополнительные запросы в базе данных и объединяя результаты в соответствующие свойства.
Пример:
$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|arrayCake\Datasource\EntityInterface>$entities одна сущность или список сущностей
-
array$contain Массив, совместимый с
contain().
Возвращаемое значение
Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>См. также
marshaller() public
marshaller(): Cake\ORM\Marshaller
Получение объекта, используемого для маршаллирования/преобразования данных массива в объекты.
Переопределите этот метод, если вы хотите, чтобы объект таблицы использовал пользовательскую логику маршаллирования.
Возвращаемое значение
Cake\ORM\MarshallerСм. также
newEmptyEntity() public
newEmptyEntity(): Cake\Datasource\EntityInterface
Создаёт новый объект сущности.
Внимание: Это не вызывает проверки полей. Эта сущность может быть сохранена без ошибок проверки как пустая запись. Всегда заполняйте необходимые поля перед сохранением.
Возвращаемое значение
Cake\Datasource\EntityInterfacenewEntities() public
newEntities(array $data, array $options = []): arrayCake\Datasource\EntityInterface>
Создаёт список сущностей + связанных сущностей из массива.
По умолчанию все ассоциации в этой таблице будут гидратированы. Вы можете ограничить создаваемые ассоциации или включить более глубокие ассоциации с помощью параметра 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 для изменения данных запроса перед преобразованием в сущности.
Параметры
-
array$data Данные для создания сущности.
-
array$options optional Список опций для гидратации объектов.
Возвращаемое значение
arrayCake\Datasource\EntityInterface>newEntity() public
newEntity(array $data, array $options = []): Cake\Datasource\EntityInterface
Создаёт новую сущность + связанные сущности из массива.
По умолчанию все ассоциации в этой таблице будут гидратированы. Вы можете ограничить создаваемые ассоциации или включить более глубокие ассоциации с помощью параметра 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 для изменения данных запроса перед преобразованием в сущности.
Параметры
-
array$data Данные для создания сущности.
-
array$options optional Список опций для гидратации объекта.
Возвращаемое значение
Cake\Datasource\EntityInterfaceСм. также
patchEntities() public
patchEntities(Cake\Datasource\EntityInterface[]Traversable $entities, array $data, array $options = []): arrayCake\Datasource\EntityInterface>
Объединяет каждый из элементов, переданных в $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[]Traversable$entities сущности, которым будут объединены данные
-
array$data список массивов для объединения в сущности
-
array$options optional список опций для гидратации объектов
Возвращаемое значение
arrayCake\Datasource\EntityInterface>patchEntity() public
patchEntity(Cake\Datasource\EntityInterface $entity, array $data, array $options = []): Cake\Datasource\EntityInterface
Объединяет переданные $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']] ] );
$article = $this->Articles->patchEntity($article, $this->request->getData(), [
'associated' => [
'Tags' => ['accessibleFields' => ['*' => true]]
]
]); По умолчанию данные проверяются перед передачей в сущность. В случае недействительных полей они не будут назначены сущности. Опцию validate можно использовать для отключения проверки переданных данных:
$article = $this->patchEntity($article, $this->request->getData(),[ 'validate' => false ]);
Можно использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием их в сущности.
При обновлении скалярных значений (null/boolean/string/integer/float), если свойство в настоящее время имеет идентичное значение, метод установщика не будет вызываться, и свойство не будет помечено как изменённое. Это оптимизация, предотвращающая ненужное обновление полей при сохранении сущностей.
Параметры
-
Cake\Datasource\EntityInterface$entity сущность, в которую будут объединены данные
-
array$data список пар ключ-значение полей, которые будут объединены в сущность
-
array$options необязательный Список параметров для гидратации объекта.
Возвращает
Cake\Datasource\EntityInterfaceСм. также
query() public
query(): Cake\ORM\Query
Создаёт новую сущность Query для таблицы.
Возвращает
Cake\ORM\QueryremoveBehavior() public
removeBehavior(string $name): $this
Удаляет поведение из реестра поведения данной таблицы.
Пример:
Удалить поведение из этой таблицы.
$this->removeBehavior('Tree'); Параметры
-
string$name Псевдоним, с которым поведение было добавлено.
Возвращает
$thisСм. также
rulesChecker() public
rulesChecker(): Cake\Datasource\RulesChecker
Возвращает RulesChecker для этого экземпляра.
Объект RulesChecker используется для проверки валидности сущности по правилам, которые могут включать сложную логику или данные, которые необходимо извлечь из соответствующих источников данных.
Возвращает
Cake\Datasource\RulesCheckerСм. также
save() public
save(Cake\Datasource\EntityInterface $entity, arrayArrayAccess $options = []): Cake\Datasource\EntityInterface|false
Сохраняет сущность на основе полей, помеченных как изменённые, и возвращает ту же сущность после успешного сохранения или 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 сущность, подлежащая сохранению
-
arrayArrayAccess$options необязательный Опции для сохранения.
Возвращает
Cake\Datasource\EntityInterface|falseВызывает исключение
Cake\ORM\Exception\RolledbackTransactionExceptionЕсли транзакция прервана в событии afterSave.
saveMany() public
saveMany(arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface $entities, arrayArrayAccessCake\ORM\SaveOptionsBuilder $options = []): arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface|false
Сохраняет несколько сущностей таблицы.
Записи будут сохранены в транзакции, которая будет отменена, если хотя бы одна запись не удастся сохранить из-за неудачной проверки или ошибки базы данных.
Параметры
-
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface$entities Сущности для сохранения.
-
arrayArrayAccessCake\ORM\SaveOptionsBuilder$options необязательный Опции, используемые при вызове Table::save() для каждой сущности.
Возвращает
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface|falseВызывает исключение
ExceptionsaveManyOrFail() public
saveManyOrFail(arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface $entities, arrayArrayAccess $options = []): arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface
Сохраняет несколько сущностей таблицы.
Записи будут сохранены в транзакции, которая будет отменена, если хотя бы одна запись не удастся сохранить из-за неудачной проверки или ошибки базы данных.
Параметры
-
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterface$entities Сущности для сохранения.
-
arrayArrayAccess$options необязательный Опции, используемые при вызове Table::save() для каждой сущности.
Возвращает
arrayCake\Datasource\EntityInterface>Cake\Datasource\ResultSetInterfaceВызывает исключение
ExceptionCake\ORM\Exception\PersistenceFailedExceptionЕсли сущность не была сохранена.
saveOrFail() public
saveOrFail(Cake\Datasource\EntityInterface $entity, arrayArrayAccess $options = []): Cake\Datasource\EntityInterface
Попытаться сохранить сущность или бросить PersistenceFailedException, если проверки правил приложения завершились неудачно, сущность содержит ошибки или сохранение было прервано обратным вызовом.
Параметры
-
Cake\Datasource\EntityInterface$entity сущность, подлежащая сохранению
-
arrayArrayAccess$options необязательный Опции для сохранения.
Возвращает
Cake\Datasource\EntityInterfaceВызывает исключение
Cake\ORM\Exception\PersistenceFailedExceptionКогда сущность не удаётся сохранить
См. также
setAlias() public
setAlias(string $alias): $this
Устанавливает псевдоним таблицы.
Параметры
-
string$alias Псевдоним таблицы
Возвращает
$thissetConnection() public
setConnection(Cake\Database\Connection $connection): $this
Устанавливает экземпляр подключения.
Параметры
-
Cake\Database\Connection$connection Экземпляр подключения
Возвращает
$thissetDisplayField() public
setDisplayField(string|string[] $field): $this
Устанавливает поле отображения.
Параметры
-
string|string[]$field Имя, используемое в качестве поля отображения.
Возвращает
$thissetEntityClass() public
setEntityClass(string $name): $this
Устанавливает класс, используемый для гидрации строк для этой таблицы.
Параметры
-
string$name Имя используемого класса.
Возвращает
$thisИсключения
Cake\ORM\Exception\MissingEntityExceptionпри невозможности найти класс сущности
setEventManager() public
setEventManager(Cake\Event\EventManagerInterface $eventManager): $this
Возвращает экземпляр Cake\Event\EventManagerInterface для этого объекта.
Вы можете использовать этот экземпляр для регистрации новых обработчиков или обратных вызовов для событий объекта, или создавать свои собственные события и вызывать их по желанию.
Параметры
-
Cake\Event\EventManagerInterface$eventManager устанавливаемый менеджер событий
Возвращает
$thissetPrimaryKey() public
setPrimaryKey(string|string[] $key): $this
Устанавливает имя первичного ключа.
Параметры
-
string|string[]$key Устанавливает новое имя, используемое в качестве первичного ключа
Возвращает
$thissetRegistryAlias() public
setRegistryAlias(string $registryAlias): $this
Устанавливает ключ реестра таблиц, используемый для создания экземпляра этой таблицы.
Параметры
-
string$registryAlias Ключ для доступа к этому объекту.
Возвращает
$thissetSchema() public
setSchema(arrayCake\Database\Schema\TableSchemaInterface $schema): $this
Устанавливает объект схемы таблицы, описывающий свойства этой таблицы.
Если передан массив, из него будет создан новый объект TableSchemaInterface, который будет использоваться в качестве схемы для этой таблицы.
Параметры
-
arrayCake\Database\Schema\TableSchemaInterface$schema Схема, используемая для этой таблицы
Возвращает
$thissetTable() public
setTable(string $table): $this
Устанавливает имя таблицы базы данных.
Это может включать имя схемы базы данных в формате 'схема.таблица'. Если имя необходимо заключить в кавычки, включите автоматическое заключение идентификаторов в кавычки.
Параметры
-
string$table Имя таблицы.
Возвращает
$thissetValidator() public
setValidator(string $name, Cake\Validation\Validator $validator): $this
Этот метод сохраняет пользовательский валидатор под данным именем.
Вы можете самостоятельно создать объект и сохранить его в своем объекте:
$validator = new \Cake\Validation\Validator();
$validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->allowEmpty('bio');
$this->setValidator('forSubscription', $validator); Параметры
-
string$name Имя настраиваемого валидатора.
-
Cake\Validation\Validator$validator Объект валидатора, который нужно установить.
Возвращает
$thissubquery() public
subquery(): Cake\ORM\Query
Создаёт новый экземпляр Query::subquery() для таблицы.
Возвращает
Cake\ORM\QueryСм. также
updateAll() public
updateAll(string|arrayClosureCake\Database\Expression\QueryExpression $fields, mixed $conditions): int
Обновляет все соответствующие записи.
Устанавливает $fields в предоставленные значения на основе $conditions. Этот метод не вызывает события beforeSave/afterSave. Если вам нужны эти события, сначала загрузите коллекцию записей и обновите их.
Параметры
-
string|arrayClosureCake\Database\Expression\QueryExpression$fields -
mixed$conditions
Возвращает
intvalidateUnique() public
validateUnique(mixed $value, array $options, array|null $context = null): bool
Метод валидации, используемый для проверки уникальности значения для столбца. Он предназначен для использования с 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|null$context optional Либо контекст валидации, либо null.
Возвращает
boolvalidationDefault() public
validationDefault(Cake\Validation\Validator $validator): Cake\Validation\Validator
Возвращает объект валидатора по умолчанию. Подклассы могут переопределять эту функцию, чтобы добавить набор правил валидации по умолчанию к объекту валидатора.
Параметры
-
Cake\Validation\Validator$validator Валидатор, который можно изменить, чтобы добавить к нему правила.
Возвращает
Cake\Validation\ValidatorvalidationMethodExists() protected
validationMethodExists(string $name): bool
Проверяет наличие метода валидации.
Параметры
-
string$name
Возвращает
boolПодробное описание свойства
$_alias protected
Человеческое имя, присвоенное этому экземпляру. Несколько объектов, представляющих одну и ту же таблицу базы данных, могут существовать, используя разные псевдонимы.
Тип
string|null$_associations protected
Контейнер ассоциаций для этой таблицы.
Тип
Cake\ORM\AssociationCollection$_behaviors protected
BehaviorRegistry для этой таблицы
Тип
Cake\ORM\BehaviorRegistry$_connection protected
Экземпляр подключения
Тип
Cake\Database\Connection|null$_displayField protected
Имя поля, представляющего удобочитаемое представление строки
Тип
string|string[]|null$_entityClass protected
Имя класса, представляющего одну строку для этой таблицы
Тип
string$_eventClass protected
Имя по умолчанию класса для новых объектов события.
Тип
string$_eventManager protected
Экземпляр Cake\Event\EventManager, используемый этим объектом для отправки внутренних событий.
Тип
Cake\Event\EventManagerInterface|null$_primaryKey protected
Имя поля, представляющего первичный ключ в таблице
Тип
string|string[]|null$_registryAlias protected
Ключ реестра, используемый для создания этого объекта таблицы
Тип
string|null$_rulesChecker protected
Правила домена, которые применяются к сущностям, сохранённым в этой таблице
Тип
Cake\Datasource\RulesChecker$_schema protected
Объект схемы, содержащий описание полей этой таблицы
Тип
Cake\Database\Schema\TableSchemaInterface|null$_table protected
Имя таблицы, как оно может быть найдено в базе данных
Тип
string|null$_validatorClass protected
Класс валидатора.
Тип
string$_validators protected
Список объектов валидации, индексированных по имени
Тип
Cake\Validation\Validator[]
© 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/4.2/class-Cake.ORM.Table.html