Класс Таблица
Представляет отдельную таблицу базы данных.
Предоставляет методы для извлечения данных из нее и управления ассоциациями этой таблицы с другими таблицами. Можно создать несколько экземпляров этого класса для одной и той же таблицы базы данных с разными псевдонимами, что позволяет более богатым и выразительным образом описывать структуру базы данных.
Извлечение данных
Основной способ извлечения данных — использование 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
- массив
$data - Фактические данные, которые нужно сохранить
Возвращает
Cake\Datasource\EntityInterface|booleanВыбрасывает
RuntimeExceptionесли не все первичные ключи были предоставлены или не могли быть сгенерированы при наличии составных первичных ключей в таблице. Или если в таблице нет первичного ключа.
_newId()source protected
_newId( array $primary )
Генерирует значение первичного ключа для новой записи.
По умолчанию, используется система типов для генерации нового значения первичного ключа, если это возможно. Вы можете переопределить этот метод, если у вас есть особые требования к генерации идентификаторов.
Примечание: ORM не будет генерировать значения первичных ключей для составных первичных ключей. Вы можете переопределить _newId() в вашем классе таблицы.
Параметры
- массив
$primary - Столбцы первичного ключа для получения нового ID.
Возвращает
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 )
Проверяет, выполнил ли бы вызывающий объект commit для транзакции.
Параметры
- boolean
$atomic - True, если использовалась атомарная транзакция.
- boolean
$primary - True, если использовался первичный ключ.
Возвращает
booleanВозвращает true, если транзакция была подтверждена.
_update()source protected
_update( Cake\Datasource\EntityInterface $entity , array $data )
Вспомогательная функция для обработки обновления данных сущности в таблице
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность-субъект, из которой был извлечен $data
- массив
$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, и где для каждого запии в этой таблице есть одна связанная запись в целевой таблице.
Целевая таблица может быть определена по её имени, которое передаётся в первом аргументе, или вы можете передать имя класса для создания экземпляра, или непосредственно экземпляр.
Массив опций принимает следующие ключи:
- className: Имя класса объекта целевой таблицы
- targetTable: Экземпляр объекта таблицы, используемый в качестве целевой таблицы
- foreignKey: Название поля, используемого в качестве внешнего ключа, если false - внешний ключ не используется
- conditions: массив с перечнем условий для фильтрации объединения
- joinType: Тип объединения (например, INNER)
- strategy: Стратегия загрузки. Поддерживаются 'join' и 'select'.
- finder: Метод поиска для загрузки записей из этой ассоциации. По умолчанию 'all'. Когда стратегия 'join', будут использоваться только поля, включения и условия WHERE из поиска.
Этот метод вернёт созданный объект ассоциации.
Параметры
- string
$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- array
$optionsнеобязательно [] - список опций для настройки определения ассоциации
Возвращает
Cake\ORM\Association\BelongsTobelongsToMany()source public
belongsToMany( string $associated , array $options [] )
Создаёт новую ассоциацию 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необязательно [] - список опций для настройки определения ассоциации
Возвращает
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Срабатывает после подтверждения транзакции для атомарного удаления. Получает событие, сущность и параметры.
Аргумент options будет преобразован в экземпляр \ArrayObject на время обращений к обработчикам, что позволяет слушателям изменять параметры, используемые в операции удаления.
Параметры
-
Cake\Datasource\EntityInterface$entity - Сущность для удаления.
- array|ArrayAccess
$optionsнеобязательно [] - Параметры для удаления.
Возвращаемое значение
booleanУспех
Реализация
Cake\Datasource\RepositoryInterface::delete() deleteAll()source public
deleteAll( mixed $conditions )
Удаляет все записи, соответствующие указанным условиям.
Параметры
- mixed
$conditions Условия, принимаются любым способом, который поддерживает Query::where().
Возвращаемое значение
integerКоличество затронутых строк.
Реализация
Cake\Datasource\RepositoryInterface::deleteAll() deleteOrFail()source public
deleteOrFail( Cake\Datasource\EntityInterface $entity , array|ArrayAccess $options [] )
Попытка удалить сущность или выброс PersistenceFailedException, если сущность новая, не имеет значения первичного ключа, проверки правил приложения не прошли или удаление было прервано обработчиком.
Параметры
-
Cake\Datasource\EntityInterface$entity - Сущность для удаления.
- array|ArrayAccess
$optionsнеобязательно [] - Параметры для удаления.
Возвращаемое значение
booleanУспех
Исключения
Cake\ORM\Exception\PersistenceFailedExceptionСм. также
\Cake\ORM\Table::delete()displayField()source public
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
По умолчанию, Model.beforeFind будет распознавать следующие ключи:
- 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. Это позволит вам настроить результаты поиска.
Параметры
Массив options передаётся в метод save с исключением следующих ключей:
- atomic: Выполнять ли методы для поиска, сохранения и обратных вызовов внутри транзакции базы данных (по умолчанию: 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']]);
Параметры
- mixed
$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 между этой таблицей и целевой таблицей. Ассоциация "has many" — это отношение 1-N.
Целевая таблица может быть определена по её имени, которое передаётся в первом аргументе, или вы можете передать имя класса для экземпляризации, либо напрямую экземпляр класса.
Массив параметров может содержать следующие ключи:
- className: Имя класса объекта целевой таблицы
- targetTable: Экземпляр объекта таблицы, используемого в качестве целевой таблицы
- foreignKey: Имя поля, используемого в качестве внешнего ключа; если false, внешний ключ не используется
- dependent: Устанавливается в true, если вы хотите, чтобы CakePHP каскадно удалял данные из связанной таблицы при удалении сущности в этой таблице. Операция удаления из связанной таблицы не будет каскадироваться дальше. Для получения рекурсивного каскадирования также включите
cascadeCallbacks. Установите в false, если вы не хотите, чтобы CakePHP удалял связанные данные, или если вы используете ограничения базы данных. - cascadeCallbacks: Устанавливается в true, если вы хотите, чтобы CakePHP вызывал обратные вызовы при каскадном удалении. Если false, ORM будет использовать deleteAll(). Если true, записи будут загружены и затем удалены.
- conditions: Массив с перечнем условий для фильтрации соединения
- sort: Порядок, в котором должны возвращаться результаты для этой ассоциации
- saveStrategy: 'append' или 'replace'. При 'append' текущие записи добавляются к любым записям в базе данных. При 'replace' связанные записи, отсутствующие в текущем наборе, будут удалены. Если внешний ключ является допустимым нулевым значением или если
dependentравно true, записи будут объявлены orphaned. - strategy: Стратегия для выбора результатов. 'select' или 'subquery'. Если выбрана стратегия subquery, запрос, используемый для возврата результатов в исходной таблице, будет использоваться в качестве условий для получения строк в целевой таблице.
- finder: Метод поиска для загрузки записей из этой ассоциации. По умолчанию 'all'.
Этот метод вернёт созданный объект ассоциации.
Параметры
- строка
$associated Псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- массив
$optionsнеобязательно [] - Список параметров для настройки определения ассоциации
Возвращает
Cake\ORM\Association\HasManyhasOne()source public
hasOne( string $associated , array $options [] )
Создаёт новую ассоциацию HasOne между этой таблицей и целевой таблицей. Ассоциация «имеет один» представляет собой отношение 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\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( array|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 для изменения данных запроса перед их преобразованием в объекты.
Параметры
- массив|Перечислимый
$entities объекты, в которые будут объединены данные
- массив
$data - список массивов для объединения с объектами
- массив
$optionsнеобязательно [] - Список опций для гидратации объектов.
Возвращает
массивРеализация
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 для изменения данных запроса перед их преобразованием в сущности.
Параметры
-
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|booleanИсключения
Cake\ORM\Exception\RolledbackTransactionExceptionЕсли транзакция прервана в событии afterSave.
Реализация
Cake\Datasource\RepositoryInterface::save() saveMany()source public
saveMany( array|Cake\ORM\ResultSet $entities , array|ArrayAccess $options [] )
Сохраняет несколько сущностей одной таблицы.
Записи будут сохранены в транзакции, которая будет отменена, если какая-либо запись не будет сохранена из-за ошибки проверки или ошибки базы данных.
Параметры
- массив|
Cake\ORM\ResultSet$entities - Сущности для сохранения.
- массив|ArrayAccess
$optionsнеобязательно [] - Параметры, используемые при вызове Table::save() для каждой сущности.
Возвращает
boolean|массив|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 )
Устанавливает псевдоним таблицы.
Параметры
- string
$alias - Псевдоним таблицы
Возвращаемое значение
$this
setConnection()source public
setConnection( Cake\Datasource\ConnectionInterface $connection )
Устанавливает экземпляр подключения.
Параметры
-
Cake\Datasource\ConnectionInterface$connection - Экземпляр подключения
Возвращаемое значение
$this
setDisplayField()source public
setDisplayField( string $key )
Устанавливает поле отображения.
Параметры
- string
$key - Имя, используемое в качестве поля отображения.
Возвращаемое значение
$this
setEntityClass()source public
setEntityClass( string $name )
Устанавливает класс, используемый для гидратации строк для этой таблицы.
Параметры
- string
$name - Имя класса для использования
Возвращаемое значение
$this
Исключения
Cake\ORM\Exception\MissingEntityExceptionв случае, если класс сущности не найден
setPrimaryKey()source public
setPrimaryKey( string|array $key )
Устанавливает имя поля первичного ключа.
Параметры
- string|array
$key - Устанавливает новое имя, используемое в качестве первичного ключа
Возвращаемое значение
$this
setRegistryAlias()source public
setRegistryAlias( string $registryAlias )
Устанавливает ключ реестра таблицы, используемый для создания этого экземпляра таблицы.
Параметры
- string
$registryAlias - Ключ, используемый для доступа к этому объекту.
Возвращаемое значение
$this
setSchema()source public
setSchema( array|Cake\Database\Schema\TableSchema $schema )
Устанавливает объект схемы таблицы, описывающий свойства этой таблицы.
Если передать массив, будет создана новая TableSchema, которая будет использоваться в качестве схемы этой таблицы.
Параметры
- array|
Cake\Database\Schema\TableSchema$schema - Схема, которая будет использоваться для этой таблицы
Возвращаемое значение
$this
setTable()source public
setTable( string $table )
Устанавливает имя таблицы базы данных.
Параметры
- string
$table - Имя таблицы.
Возвращаемое значение
$this
table()source public
table( string|null $table null )
Возвращает имя таблицы базы данных или устанавливает новое.
Устарело
3.4.0 Используйте setTable()/getTable() вместо этого.Параметры
- string|null
$tableнеобязательно null - новое имя таблицы
Возвращаемое значение
stringupdateAll()source public
updateAll( string|array|callable|Cake\Database\Expression\QueryExpression $fields , mixed $conditions )
Обновляет все совпадающие записи.
Параметры
- string|array|callable|
Cake\Database\Expression\QueryExpression$fields - Хэш полей => нового значения.
- mixed
$conditions Условия, используемые, принимает все, что может принять Query::where().
Возвращаемое значение
integerКоличество обновлённых строк.
Реализация
Cake\Datasource\RepositoryInterface::updateAll() validateUnique()source public
validateUnique( mixed $value , array $options , array $context null )
Метод валидации, используемый для проверки уникальности значения для столбца. Этот метод предназначен для использования с API валидации, а не для прямого вызова.
Пример:
$validator->add('email', [
'unique' => ['rule' => 'validateUnique', 'provider' => 'table']
]) Валидация уникальности может быть ограничена значением другого столбца:
$validator->add('email', [
'unique' => [
'rule' => ['validateUnique', ['scope' => 'site_id']],
'provider' => 'table'
]
]); В приведённом выше примере уникальность адреса электронной почты будет ограничена только строками, имеющими один и тот же идентификатор сайта. Ограничение будет использоваться только в том случае, если поле ограничения присутствует в данных, подлежащих валидации.
Параметры
- mixed
$value - Значение столбца, которое проверяется на уникальность.
- array
$options Массив опций, необязательно содержащий ключ 'scope'. Также может быть контекстом валидации, если опций нет.
- array
$contextнеобязательно null - Контекст валидации или null.
Возвращаемое значение
booleanTrue, если значение уникально, или false, если было предоставлено нескалярное, неуникальное значение.
validationMethodExists()source protected
validationMethodExists( $method )
Методы, используемые из Cake\Event\EventDispatcherTrait
dispatchEvent()source public
dispatchEvent( string $name , array|null $data null , object|null $subject null )
Обёртка для создания и отправки событий.
Возвращает отправленное событие.
Параметры
- string
$name - Имя события.
- array|null
$dataнеобязательно null Любое значение, которое вы хотите передать с этим событием, чтобы его могли прочитать слушатели.
- object|null
$subjectнеобязательно null Объект, к которому относится это событие ($this по умолчанию).
Возвращаемое значение
Cake\Event\EventeventManager()source public
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
Контейнер ассоциаций для этой таблицы.
$_registryAliassource
protected string
Ключ реестра, используемый для создания этого объекта таблицы
$_schemasource
protected Cake\Database\Schema\TableSchema
Объект схемы, содержащий описание полей этой таблицы
© 2005–2017 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.4/class-Cake.ORM.Table.html