Класс Таблица
Представляет собой отдельную базу данных.
Предоставляет методы для извлечения данных и управления связями этой таблицы с другими таблицами. Несколько экземпляров этого класса могут быть созданы для одной и той же таблицы базы данных с различными псевдонимами, что позволяет более богатым и выразительным способом обратиться к структуре базы данных.
Извлечение данных
Основной способ извлечения данных — использование Table::find(). Подробнее об этом методе см. в документации.
Динамические методы поиска
В дополнение к стандартным методам поиска find($type), CakePHP предоставляет динамические методы поиска. Эти методы позволяют легко задавать базовые условия. Например, чтобы отфильтровать пользователей по имени пользователя, вы бы вызвали
$query = $users->findByUsername('mark'); Вы также можете комбинировать условия по нескольким полям, используя Or или And:
$query = $users->findByUsernameOrEmail('mark', 'mark@example.org'); Массовые обновления/удаления
Вы можете использовать Table::updateAll() и Table::deleteAll() для массовых обновлений/удалений. Следует помнить, что события не будут вызываться для массовых обновлений/удалений.
Обработчики/события
Объекты таблицы предоставляют несколько обработчиков/событий, на которые можно подписаться для расширения/замены операций поиска. Каждое событие использует стандартную систему событий 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\Event\EventDispatcherTrait , Cake\Datasource\RulesAwareTrait , Cake\Validation\ValidatorAwareTrait
См.: \Cake\Event\EventManager для справки по системе событий.
Расположение: ORM/Table.php
Резюме констант
-
string'default' -
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.
- _getFindOrCreateQuery() protectedПолучает объект запроса для findOrCreate().
- _initializeSchema() protected
Переопределите эту функцию для изменения схемы, используемой этой таблицей. Эта функция вызывается только после извлечения схемы из базы данных. Если вы хотите предоставить собственную схему для этой таблицы, не затрагивая базу данных, вы можете переопределить schema() или ввести определения через этот метод.
- _insert() protectedВспомогательная функция для обработки вставки данных сущности в таблицу
- _newId() protectedГенерирует значение первичного ключа для новой записи.
- _onSaveSuccess() protected
Обрабатывает сохранение дочерних ассоциаций и выполнение логики afterSave, как только сущность для этой таблицы будет успешно сохранена.
- _processDelete() protectedВыполняет операцию удаления.
- _processFindOrCreate() protectedВыполняет фактическое нахождение и/или создание сущности на основе переданных параметров.
- _processSave() protectedВыполняет фактическое сохранение сущности на основе переданных параметров.
- _setFieldMatchers() protected
Из массива параметров проверить, являются ли ключи, описанные в
$keys, массивами, и изменить значения для замыканий, которые будут конкатенировать каждую из свойств в массиве значений при передаче строки. - _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Удаляет все записи, соответствующие предоставленным условиям.
- displayField() publicВозвращает поле отображения или устанавливает новое
- entityClass() public
Возвращает класс, используемый для гидратации строк для этой таблицы, или устанавливает новый
- exists() public
Возвращает true, если в этом хранилище есть запись, соответствующая указанным условиям.
- find() public
Создает новый запрос для этого хранилища и применяет некоторые значения по умолчанию на основе типа поиска, который был выбран.
- findAll() publicВозвращает переданный запрос.
- findList() public
Настраивает объект запроса, чтобы результаты отображались как индексированный массив, что полезно в любом месте, где вам нужен список, например, для заполнения выпадающих списков ввода.
- findOrCreate() publicНаходит существующую запись или создает новую.
- findThreaded() public
Результаты этого нахождения будут вложенным массивом и подходят, если вы хотите использовать поле parent_id ваших данных модели для построения вложенных результатов.
- get() public
Возвращает одну запись после ее поиска по первичному ключу; если запись не найдена, этот метод генерирует исключение.
- getSaveOptionsBuilder() publicПолучает экземпляр SaveOptionsBuilder.
- 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Сохраняет несколько сущностей таблицы.
- schema() publicВозвращает объект схемы таблицы, описывающий свойства этой таблицы.
- table() publicВозвращает имя таблицы базы данных или задаёт новое.
- updateAll() publicОбновляет все соответствующие записи.
- validateUnique() public
Метод валидации, используемый для проверки уникальности значения для столбца. Он предназначен для использования с API валидации, а не для прямого вызова.
Подробное описание методов
__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\Table или массив, который можно передать в него.
- eventManager: Экземпляр менеджера событий, который нужно использовать для внутренних событий
- behaviors: BehaviorRegistry. Как правило, не используется вне тестов.
- associations: Экземпляр AssociationCollection.
- validator: Экземпляр Validator, который назначается как набор валидации "по умолчанию", или ассоциативный массив, где ключ - имя набора валидации, а значение - экземпляр 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когда отсутствуют аргументы или когда знаки &, или & или или объединены.
_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\Table $table )
Переопределите эту функцию, чтобы изменить схему, используемую этой таблицей. Эта функция вызывается только после извлечения схемы из базы данных. Если вы хотите предоставить собственную схему для этой таблицы без изменения базы данных, вы можете переопределить schema() или ввести определения через этот метод.
Пример:
protected function _initializeSchema(\Cake\Database\Schema\Table $table) {
$table->columnType('preferences', 'json');
return $table;
} Параметры
-
Cake\Database\Schema\Table$table - Определение таблицы, извлеченное из базы данных.
Возвращает
Cake\Database\Schema\TableИзменённая схема.
_insert()source protected
_insert( Cake\Datasource\EntityInterface $entity , array $data )
Вспомогательная функция для обработки вставки данных сущности в таблицу
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность, из которой извлечены $data
- массив
$data - Фактические данные, которые нужно сохранить
Возвращает
Cake\Datasource\EntityInterface|логическоеИсключения
RuntimeExceptionесли не все первичные ключи были предоставлены или не могли быть сгенерированы, когда таблица имеет составные первичные ключи. Или если у таблицы нет первичного ключа.
_newId()source protected
_newId( array $primary )
Генерирует значение первичного ключа для новой записи.
По умолчанию, используется система типов для генерации нового значения первичного ключа, если это возможно. Вы можете переопределить этот метод, если у вас есть особые требования к генерации идентификаторов.
Параметры
- массив
$primary - Столбцы первичного ключа, для которых необходимо получить новый идентификатор.
Возвращает
смешанныйЛибо null, либо новое значение первичного ключа.
_onSaveSuccess()source protected
_onSaveSuccess( Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Обрабатывает сохранение дочерних ассоциаций и выполнение логики после сохранения после успешного сохранения сущности для этой таблицы.
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность, которую нужно сохранить
- ArrayObject
$options - параметры для операции сохранения
Возвращает
логическоеTrue в случае успеха
Исключения
Cake\ORM\Exception\RolledbackTransactionExceptionЕсли транзакция прервана в событии afterSave.
_processDelete()source protected
_processDelete( Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Выполняет операцию удаления.
Удалит предоставленную сущность. Удалит строки из всех зависимых ассоциаций и очистит таблицы соединения для ассоциаций BelongsToMany.
Параметры
-
Cake\Datasource\EntityInterface$entity - Сущность, которую нужно удалить.
- ArrayObject
$options - Параметры для удаления.
Возвращает
логическоеУспех
Исключения
InvalidArgumentExceptionесли нет значений первичных ключей переданной сущности
_processFindOrCreate()source protected
_processFindOrCreate( array|callable $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 для построения совпадений из соответствующего значения
Возвращает
массив_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 - Набор ассоциаций для привязки (индексированный по типу ассоциации)
См. также
\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необязательно [] - Параметры для использования с поведением.
Исключения
RuntimeExceptionЕсли поведение перезагружается.
См. также
Cake\ORM\Behavioralias()source public
alias( string|null $alias null )
Возвращает псевдоним таблицы или устанавливает новый
Параметры
- строка|null
$aliasнеобязательно null - новый псевдоним таблицы
Возвращает
строкаРеализация
Cake\Datasource\RepositoryInterface::alias() aliasField()source public
aliasField( string $field )
Присваивает псевдоним полю с текущим псевдонимом таблицы.
Если поле уже имеет псевдоним, результат будет пустым.
Параметры
- строка
$field - Поле, которому нужно присвоить псевдоним.
Возвращает
строкаПредставленное поле с префиксом текущего псевдонима таблицы.
association()source public
association( string $name )
Возвращает объект ассоциации, сконфигурированный для указанного псевдонима, если он существует
Параметры
- строка
$name - псевдоним, используемый для ассоциации.
Возвращает
Cake\ORM\Association|nullАссоциация или null.
associations()source public
associations( )
Получить коллекцию ассоциаций для этой таблицы.
Возвращает
Cake\ORM\AssociationCollectionКоллекция объектов ассоциации.
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 из поиска.
Этот метод вернёт созданный объект ассоциации.
Параметры
- строка
$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- массив
$optionsнеобязательно [] - список параметров для настройки определения ассоциации
Возвращает
Cake\ORM\Association\BelongsTobelongsToMany()source public
belongsToMany( string $associated , array $options [] )
Создаёт новую ассоциацию BelongsToMany между этой таблицей и целевой таблицей. Ассоциация "belongs to many" — это отношение М-Н.
Целевую таблицу можно определить по её имени, указанному в первом аргументе, или передать имя класса для его экземпляризации, или непосредственно экземпляр класса.
Массив опций принимает следующие ключи:
- className: Имя класса объекта целевой таблицы.
- targetTable: Экземпляр объекта таблицы, который будет использоваться как целевая таблица.
- foreignKey: Название поля, используемого в качестве внешнего ключа.
- targetForeignKey: Название поля, используемого в качестве внешнего ключа целевой таблицы.
- joinTable: Имя таблицы, представляющей связь между двумя таблицами
- through: Если вы выбираете использовать уже созданную таблицу связи, установите этот ключ в конфигурированный экземпляр таблицы, содержащий ассоциации с исходной и целевой таблицами в этой ассоциации.
- 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 $conn null )
Возвращает экземпляр соединения или устанавливает новый.
Параметры
-
Cake\Datasource\ConnectionInterface$connнеобязательно 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() displayField()source public
displayField( string|null $key null )
Возвращает поле отображения или устанавливает новое.
Параметры
- string|null
$keyнеобязательно null - устанавливает новое имя, используемое в качестве поля отображения
Возвращает
stringentityClass()source public
entityClass( string|null $name null )
Возвращает класс, используемый для гидратации строк для этой таблицы, или устанавливает новый.
Параметры
- string|null
$nameнеобязательно null - имя класса для использования
Возвращает
stringИсключения
Cake\ORM\Exception\MissingEntityExceptionпри невозможности найти класс сущности
exists()source public
exists( array|ArrayAccess $conditions )
Возвращает true, если в этом репозитории есть записи, соответствующие указанным условиям.
Параметры
- array|ArrayAccess
$conditions - список условий для запроса
Возвращает
booleanРеализация
Cake\Datasource\RepositoryInterface::exists() find()source public
find( string $type 'all' , array|ArrayAccess $options [] )
Создаёт новый запрос для этого репозитория и применяет некоторые значения по умолчанию, основанные на выбранном типе поиска.
Событие Model.beforeFind
Каждый find() вызывает событие Model.beforeFind для всех подключенных слушателей. Любой слушатель может установить допустимый набор результатов, используя $query
По умолчанию, $options распознаёт следующие ключи:
- fields
- conditions
- order
- limit
- offset
- page
- group
- having
- contain
- join
Использование
Использование массива опций:
$query = $articles->find('all', [
'conditions' => ['published' => 1],
'limit' => 10,
'contain' => ['Users', 'Comments']
]); Использование интерфейса билдера:
$query = $articles->find() ->where(['published' => 1]) ->limit(10) ->contain(['Users', 'Comments']);
Вызов методов finders
Метод find() — это точка входа для пользовательских методов finders. Вы можете вызвать finder, указав его тип:
$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 - Запрос для поиска
- массив
$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 - Запрос для поиска
- массив
$options - Параметры поиска
Возвращает
Cake\ORM\QueryПостроитель запроса
findOrCreate()source public
findOrCreate( array|Cake\ORM\Query $search , callable $callback null , array $options [] )
Ищет существующую запись или создаёт новую.
Сначала выполнится поиск существующей записи, используя атрибуты, определённые в $search. Если записи соответствуют условиям, будет возвращена первая запись.
Если запись не найдена, будет создана новая сущность с свойствами $search. Если указана функция обратного вызова, она будет вызвана, позволяя определить дополнительные значения по умолчанию. Новая сущность будет сохранена и возвращена.
Если условия поиска требуют пользовательского порядка, ассоциаций или условий, параметр $search может быть вызываемой функцией, которая принимает запрос в качестве аргумента, или объектом \Cake\ORM\Query, переданным в качестве параметра $search. Это позволяет настроить результаты поиска.
Параметры
Массив параметров передаётся методу сохранения, за исключением следующих ключей:
- atomic: Выполнять ли методы поиска, сохранения и обратные вызовы внутри транзакции базы данных (по умолчанию: true)
- defaults: Использовать ли критерии поиска в качестве значений по умолчанию для новой сущности (по умолчанию: true)
Параметры
- массив|
Cake\ORM\Query$search Критерии поиска существующих записей. Обратите внимание, что при передаче объекта запроса вам нужно будет использовать второй аргумент метода, чтобы изменить данные сущности перед сохранением.
- функция обратного вызова
$callbackнеобязательно null Функция обратного вызова, которая будет вызвана для вновь созданных сущностей. Эта функция будет вызвана *до* сохранения сущности.
- массив
$optionsнеобязательно [] - Параметры сохранения.
Возвращает
Cake\Datasource\EntityInterfaceСущность.
findThreaded()source public
findThreaded( Cake\ORM\Query $query , array $options )
Результаты этого поиска будут вложенным массивом и подходят, если вы хотите использовать поле parent_id данных вашей модели для создания вложенных результатов.
Значения, относящиеся к родительской строке на основе значения parent_id, будут рекурсивно вложены внутри значений родительской строки, используя свойство children.
Вы можете настроить поля, используемые для вложенных результатов. По умолчанию используются первичный ключ и поля parent_id. Если вы хотите изменить эти значения по умолчанию, необходимо предоставить ключи keyField, parentField или nestingKey в $options.
$table->find('threaded', [
'keyField' => 'id',
'parentField' => 'ancestor_id'
'nestingKey' => 'children'
]); Параметры
-
Cake\ORM\Query$query - Запрос для поиска
- массив
$options - Параметры поиска
Возвращает
Cake\ORM\QueryПостроитель запроса
get()source public
get( mixed $primaryKey , array|ArrayAccess $options [] )
Возвращает одну запись после её поиска по первичному ключу. Если запись не найдена, этот метод выбросит исключение.
Использование
Получить статью и некоторые отношения:
$article = $articles->get(1, ['contain' => ['Users', 'Comments']]);
Параметры
- смешанный
$primaryKey - значение первичного ключа для поиска
- массив|ArrayAccess
$optionsнеобязательно [] - параметры, принимаемые
Table::find()
Возвращает
Cake\Datasource\EntityInterfaceИсключения
Cake\Datasource\Exception\InvalidPrimaryKeyExceptionКогда $primaryKey имеет неверное количество элементов.
Реализация
Cake\Datasource\RepositoryInterface::get() getSaveOptionsBuilder()source public
getSaveOptionsBuilder( array $options [] )
Возвращает экземпляр SaveOptionsBuilder.
Параметры
- массив
$optionsнеобязательно [] - Параметры для обработки билдером.
Возвращает
Cake\ORM\SaveOptionsBuilderhasBehavior()source public
hasBehavior( string $name )
Проверяет, загружен ли бихевиор с указанным псевдонимом.
Параметры
- строка
$name - Псевдоним бихевиора для проверки.
Возвращает
booleanСуществует ли бихевиор.
hasField()source public
hasField( string $field )
Проверяет, содержит ли таблица определённое поле/столбец.
Делегирует проверку присутствия столбца объекту схемы с помощью экземпляра Schema\Table.
Параметры
- строка
$field - Поле для проверки.
Возвращает
booleanTrue, если поле существует, false — если нет.
Реализация
Cake\Datasource\RepositoryInterface::hasField() hasFinder()source public
hasFinder( string $type )
Возвращает true, если поиск существует для таблицы
Параметры
- строка
$type - Имя искомого поиска
Возвращает
booleanhasMany()source public
hasMany( string $associated , array $options [] )
Создаёт новую ассоциацию HasMany между этой таблицей и целевой таблицей. Ассоциация «has many» — это отношение 1-N.
Целевая таблица может быть определена по имени, которое передаётся в первом аргументе, или вы можете передать имя класса для создания экземпляра или непосредственно экземпляр класса.
Массив параметров принимает следующие ключи:
- className: Имя класса объекта целевой таблицы
- targetTable: Экземпляр объекта таблицы, используемый в качестве целевой таблицы
- foreignKey: Имя поля, используемого в качестве внешнего ключа, если false, не используется
- dependent: Установите в true, если вы хотите, чтобы CakePHP выполнил каскадное удаление в связанной таблице при удалении сущности в этой таблице. Операция удаления в связанной таблице не будет выполняться рекурсивно. Чтобы получить рекурсивное каскадное удаление, также включите
cascadeCallbacks. Установите в false, если вы не хотите, чтобы CakePHP удалял связанные данные или когда вы используете ограничения базы данных. - cascadeCallbacks: Установите в true, если вы хотите, чтобы CakePHP вызывал обратные вызовы при каскадном удалении. Если false, ORM будет использовать deleteAll() для удаления данных. Если true, записи будут загружены, а затем удалены.
- conditions: массив с условиями для фильтрации объединения
- sort: Порядок, в котором должны возвращаться результаты этой ассоциации
- saveStrategy: 'append' или 'replace'. При 'append' текущие записи добавляются к любым записям в базе данных. При 'replace' связанные записи, которые не присутствуют в текущем наборе, будут удалены. Если внешний ключ является полем NULL или если
dependentравен true, записи будут отброшены. - strategy: Стратегия для выбора результатов. Либо 'select', либо 'subquery'. Если выбран 'subquery', запрос, используемый для возврата результатов в исходной таблице, будет использоваться в качестве условий для получения строк в целевой таблице.
- finder: Метод поиска для загрузки записей из этой ассоциации. По умолчанию — 'all'.
Этот метод вернёт объект ассоциации, который был создан.
Параметры
- строка
$associated Псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- массив
$optionsнеобязательно [] - Список параметров для настройки определения ассоциации
Возвращает
Cake\ORM\Association\HasManyhasOne()source public
hasOne( string $associated , array $options [] )
Создаёт новую ассоциацию HasOne между этой таблицей и целевой таблицей. Ассоциация "has one" — это отношение 1:1.
Целевую таблицу можно определить по её имени, которое указано в первом аргументе, или вы можете передать имя класса для создания экземпляра или непосредственно экземпляр класса.
Массив параметров может содержать следующие ключи:
- className: Имя класса объекта целевой таблицы
- targetTable: Экземпляр объекта таблицы, который будет использоваться как целевая таблица
- foreignKey: Имя поля, используемого в качестве внешнего ключа; если false, внешний ключ не будет использован
- dependent: Устанавливается в true, если вы хотите, чтобы CakePHP каскадно удалял связанные записи в целевой таблице при удалении записи в этой таблице. Операция удаления в связанной таблице не будет каскадно распространяться далее. Чтобы получить рекурсивные каскадные удаления, включите также
cascadeCallbacks. Установите в false, если не хотите, чтобы CakePHP удалял связанные данные, или когда вы используете ограничения базы данных. - cascadeCallbacks: Устанавливается в true, если вы хотите, чтобы CakePHP вызывал колбэки при каскадном удалении. Если false, ORM будет использовать deleteAll() для удаления данных. При true записи будут загружены, а затем удалены.
- conditions: массив с перечнем условий для фильтрации соединения
- joinType: Тип соединения (например, LEFT)
- strategy: Стратегия загрузки. Поддерживаются 'join' и 'select'.
- finder: Метод нахождения для загрузки записей из этой ассоциации. По умолчанию 'all'. Когда стратегия 'join', будут использоваться только поля, содержащиеся и условия where из нахождения.
Этот метод вернёт объект ассоциации, который был создан.
Параметры
- string
$associated псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
- array
$optionsoptional [] - список параметров для настройки определения ассоциации
Возвращает
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
Возвращает
arrayРеализация
Cake\Event\EventListenerInterface::implementedEvents() initialize()source public
initialize( array $config )
Инициализация экземпляра таблицы. Вызывается после конструктора.
Вы можете использовать этот метод для определения ассоциаций, добавления бихевиоров, определения валидации и выполнения любой другой необходимой инициализации.
public function initialize(array $config)
{
$this->belongsTo('Users');
$this->belongsToMany('Tagging.Tags');
$this->primaryKey('something_else');
} Параметры
- array
$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|array$entities - один объект или список объектов
- array
$contain - Массив, совместимый с
contain().
Возвращает
Cake\Datasource\EntityInterface|arrayСм. также
\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->data(), ['associated' => ['Tags', 'Comments.Users']] );
Вы можете ограничить поля, которые будут присутствовать в созданных объектах, передав параметр fieldList, который также принимается для ассоциаций:
$articles = $this->Articles->newEntities($this->request->data(), [ 'fieldList' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fieldList' => 'username']] ] );
Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием в объекты.
Параметры
- array
$data - Данные для создания объекта.
- array
$optionsoptional [] - Список параметров для гидратации объектов.
Возвращает
arrayМассив гидратированных записей.
Реализация
Cake\Datasource\RepositoryInterface::newEntities() newEntity()source public
newEntity( array|null $data null , array $options [] )
Создать новый объект + связанные объекты из массива.
По умолчанию все ассоциации в этой таблице будут гидратированы. Вы можете ограничить создаваемые ассоциации или включить более глубокие ассоциации, используя параметр options:
$article = $this->Articles->newEntity( $this->request->data(), ['associated' => ['Tags', 'Comments.Users']] );
Вы можете ограничить поля, которые будут присутствовать в созданном объекте, передав параметр fieldList, который также принимается для ассоциаций:
$article = $this->Articles->newEntity($this->request->data(), [ 'fieldList' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fieldList' => 'username']] ] );
Параметр fieldList позволяет удалить или ограничить входные данные, которые попадают в объект. Если вы хотите ослабить стандартные доступные поля объекта, вы можете использовать параметр accessibleFields.
$article = $this->Articles->newEntity( $this->request->data(), ['accessibleFields' => ['protected_field' => true]] );
По умолчанию данные проверяются перед передачей новому объекту. В случае некорректных полей они не будут присутствовать в полученном объекте. Параметр validate может быть использован для отключения проверки переданных данных:
$article = $this->Articles->newEntity( $this->request->data(), ['validate' => false] );
Вы также можете передать имя валидатора в параметре validate. Если null передано в первый параметр этой функции, проверка не будет выполнена.
Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием в объекты.
Параметры
- array|null
$dataoptional null - Данные для создания объекта.
- array
$optionsoptional [] - Список параметров для гидратации объектов.
Возвращает
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->data(), [ 'fieldList' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fieldList' => 'username']] ] );
Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием в объекты.
Параметры
- array|Traversable
$entities объекты, которым будут объединены данные
- array
$data - список массивов, которые будут объединены в объекты
- array
$optionsoptional [] - список параметров для гидратации объектов
Возвращает
arrayРеализация
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->data(), [ 'fieldList' => ['title', 'body', 'tags', 'comments'], 'associated' => ['Tags', 'Comments.Users' => ['fieldList' => 'username']] ] );
По умолчанию данные проверяются перед передачей в сущность. В случае неверных полей они не будут назначены сущности. Опцию validate можно использовать для отключения проверки данных:
$article = $this->patchEntity($article, $this->request->data(),[ '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 )
Возвращает имя поля первичного ключа или задаёт новое.
Параметры
- строка|массив|null
$keyнеобязательно null - устанавливает новое имя, которое будет использоваться в качестве первичного ключа
Возвращает
строка|массивquery()source public
query( )
Создаёт новый экземпляр Query для этого репозитория.
Возвращает
Cake\ORM\QueryРеализация
Cake\Datasource\RepositoryInterface::query() registryAlias()source public
registryAlias( string|null $registryAlias null )
Возвращает ключ реестра таблицы, используемый для создания этого экземпляра таблицы.
Параметры
- строка|null
$registryAliasнеобязательно null - ключ, используемый для доступа к этому объекту
Возвращает
строкаremoveBehavior()source public
removeBehavior( string $name )
Удаляет поведение из реестра поведения этой таблицы.
Пример:
Удалить поведение из этой таблицы.
$this->removeBehavior('Tree'); Параметры
- строка
$name - Псевдоним, с которым было добавлено поведение.
См.
Cake\ORM\Behaviorsave()source public
save( Cake\Datasource\EntityInterface $entity , array|ArrayAccess $options [] )
Сохраняет сущность на основе полей, отмеченных как изменённые, и возвращает ту же сущность после успешного сохранения или false в случае ошибки.
Опции
Массив опций принимает следующие ключи:
- atomic: Выполнять ли сохранение и обратные вызовы в транзакции базы данных (по умолчанию: true)
- checkRules: Проверять ли правила на сущности перед сохранением; если проверка завершится неудачей, операция сохранения будет прервана. (по умолчанию: true)
- associated: Если
trueон сохранит сущности первого уровня, как они найдены в переданном$entity, всякий раз, когда свойство, определенное для ассоциации, помечено как изменённое. Если массив, он будет интерпретирован как список ассоциаций для сохранения. Возможна передача различных опций для сохранения на связанных объектах таблиц с помощью этого ключа, задавая массив значений в качестве опции. Еслиfalseсвязанные записи не будут сохранены. (по умолчанию:true) - checkExisting: Проверять ли, существует ли сущность, предполагая, что сущность не новая, и первичный ключ установлен.
События
При сохранении этот метод будет вызывать четыре события:
- Model.beforeRules: Вызывается непосредственно перед проверкой правил для переданной сущности, если ключ
checkRulesв $options не установлен в false. Обработчики получат в качестве аргументов сущность, массив опций и тип операции. Если событие остановлено, результат проверки правил будет установлен в результат самого события. - Model.afterRules: Вызывается сразу после вызова метода
checkRules()для сущности. Обработчики получат в качестве аргументов сущность, массив опций, результат проверки правил и тип операции. Если событие остановлено, результат проверки будет установлен в результат самого события. - Model.beforeSave: Вызывается непосредственно перед расчётом списка полей для сохранения. Получает как сущность, так и массив опций. Массив опций передаётся как ArrayObject, поэтому любые изменения в нём будут отражены в каждом обработчике и сохранены в конце события, чтобы их можно было использовать для остальной части операции сохранения. Возвращение false в любом из обработчиков прервёт процесс сохранения. Если событие остановлено с использованием API событий, свойство
resultобъекта события будет возвращено. Это может быть полезно при реализации собственной стратегии сохранения внутри обработчика. - Model.afterSave: Вызывается после успешного вставки или сохранения. Обработчики получат сущность и массив опций в качестве аргументов. Тип выполненной операции (вставка или обновление) можно определить, проверив метод сущности
isNew, true означает вставку, а false - обновление. - Model.afterSaveCommit: Вызывается после завершения транзакции для атомарного сохранения. Обработчики получат сущность и массив опций в качестве аргументов.
Этот метод определит, нужно ли вставлять или обновлять переданную сущность в базе данных. Он делает это, проверяя метод isNew в сущности. Если сущность, подлежащая сохранению, возвращает ненулевое значение из своего метода errors(), она не будет сохранена.
Сохранение связанных таблиц
Этот метод по умолчанию сохраняет сущности, относящиеся к связанным таблицам, всякий раз, когда изменяемое свойство соответствует имени свойства, заданному для ассоциации в этой таблице. Можно контролировать, какие ассоциации будут сохранены, и передавать дополнительные опции для их сохранения.
// Only save the comments association
$articles->save($entity, ['associated' => ['Comments']);
// Save the company, the employees and related addresses for each of them.
// For employees do not check the entity rules
$companies->save($entity, [
'associated' => [
'Employees' => [
'associated' => ['Addresses'],
'checkRules' => false
]
]
]);
// Save no associations
$articles->save($entity, ['associated' => false]); Параметры
-
Cake\Datasource\EntityInterface$entity - сущность, подлежащая сохранению
- массив|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 при ошибке, список сущностей при успехе.
schema()source public
schema( array|Cake\Database\Schema\Table|null $schema null )
Возвращает объект схемы таблицы, описывающий свойства этой таблицы.
Если передан \Cake\Database\Schema\Table, он будет использован для этой таблицы вместо стандартного.
Если передан массив, будет создан новый \Cake\Database\Schema\Table из него и использован в качестве схемы для этой таблицы.
Параметры
- массив|
Cake\Database\Schema\Table|null$schemaнеобязательно null - Новая схема для использования в этой таблице
Возвращает
Cake\Database\Schema\Tabletable()source public
table( string|null $table null )
Возвращает имя таблицы базы данных или задаёт новое.
Параметры
- строка|null
$tableнеобязательно null - новое имя таблицы
Возвращает
строкаupdateAll()source public
updateAll( string|array|callable|Cake\Database\Expression\QueryExpression $fields , mixed $conditions )
Обновляет все совпадающие записи.
Параметры
- строка|массив|вызов|
Cake\Database\Expression\QueryExpression$fields - Хэш поля => новое значение.
- смешанный
$conditions Условие, которое должно быть использовано; принимает всё, что может принять Query::where().
Возвращает
целое числоКоличество возвращаемых строк.
Реализация
Cake\Datasource\RepositoryInterface::updateAll() validateUnique()source public
validateUnique( mixed $value , array $options , array $context null )
Метод валидации, используемый для проверки уникальности значения для столбца. Он предназначен для использования с API валидации, а не для прямого вызова.
Пример:
$validator->add('email', [
'unique' => ['rule' => 'validateUnique', 'provider' => 'table']
]) Валидация уникальности может быть ограничена значением другого столбца:
$validator->add('email', [
'unique' => [
'rule' => ['validateUnique', ['scope' => 'site_id']],
'provider' => 'table'
]
]); В приведённом выше примере уникальность электронного адреса будет ограничена только строками, имеющими одинаковый site_id. Ограничение будет использоваться только в том случае, если столбец, используемый для ограничения, присутствует в данных, которые необходимо валидировать.
Параметры
- mixed
$value - Значение столбца, уникальность которого нужно проверить.
- array
$options Массив опций, необязательно содержащий ключ 'scope'. Также может быть контекстом валидации, если опции отсутствуют.
- array
$contextoptional null - Контекст валидации или null.
Возвращает
booleanTrue, если значение уникально, или false, если было задано нескалярное, не уникальное значение.
Методы, используемые из Cake\Event\EventDispatcherTrait
dispatchEvent()source public
dispatchEvent( string $name , array|null $data null , object|null $subject null )
Обёртка для создания и отправки событий.
Возвращает обработанное событие.
Параметры
- string
$name - Имя события.
- array|null
$dataoptional null Любое значение, которое вы хотите передать вместе с этим событием, чтобы слушатели могли его прочитать.
- object|null
$subjectoptional null Объект, к которому относится это событие (по умолчанию $this).
Возвращает
Cake\Event\EventeventManager()source public
eventManager( Cake\Event\EventManager $eventManager null )
Возвращает экземпляр менеджера событий Cake\Event\EventManager для данного объекта.
Вы можете использовать этот экземпляр для регистрации новых слушателей или обратных вызовов к событиям объекта, или создавать свои собственные события и вызывать их по желанию.
Параметры
-
Cake\Event\EventManager$eventManageroptional null - устанавливаемый eventManager
Возвращает
Cake\Event\EventManagerМетоды, используемые из 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
$operationoptional RulesChecker::CREATE - Выполняемая операция. Либо 'create', 'update' или 'delete'.
- ArrayObject|array|null
$optionsoptional null - Опции, которые необходимо передать правилам.
Возвращает
booleanrulesChecker()source public
rulesChecker( )
Возвращает RulesChecker для этого экземпляра.
Объект RulesChecker используется для проверки сущности на соответствие правилам, которые могут включать сложную логику или данные, которые необходимо извлечь из соответствующих источников данных.
Возвращает
Cake\Datasource\RulesCheckerСм.
Cake\Datasource\RulesCheckerМетоды, используемые из Cake\Validation\ValidatorAwareTrait
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 в вашем подклассе таблицы, если хотите иметь набор валидации, который применяется в тех случаях, когда не указан ни один другой набор.
Параметры
- string|null
$nameoptional null - имя набора валидации, который нужно вернуть
-
Cake\Validation\Validator$validatoroptional null экземпляр валидатора для хранения, использование null для получения валидатора.
Возвращает
Cake\Validation\ValidatorВыбрасывает
RuntimeExceptionПодробное описание свойств
$_aliassource
protected string
Человеческое имя, присвоенное данному экземпляру. Несколько объектов, представляющих одну и ту же таблицу базы данных, могут существовать, используя разные псевдонимы.
$_associationssource
protected Cake\ORM\AssociationCollection
Контейнер ассоциаций для этой таблицы.
$_schemasource
protected Cake\Database\Schema\Table
Объект схемы, содержащий описание полей этой таблицы
© 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.3/class-Cake.ORM.Table.html