Spec-Zone.ru › CakePHP 4.3

Класс Таблица

Представляет отдельную таблицу базы данных.

Предоставляет методы для извлечения данных из неё и управляет ассоциациями этой таблицы с другими таблицами. Можно создавать несколько экземпляров этого класса для одной и той же таблицы базы данных с различными псевдонимами, что позволяет более богатым и выразительным образом описывать вашу структуру базы данных.

Извлечение данных

Основной способ извлечения данных — использование Table::find(). Смотрите этот метод для получения дополнительной информации.

Динамические методы поиска

В дополнение к стандартным методам поиска find($type), CakePHP предоставляет динамические методы поиска. Эти методы позволяют легко задавать базовые условия. Например, для фильтрации пользователей по имени пользователя вы бы вызвали

$query = $users->findByUsername('mark');

Вы также можете комбинировать условия по нескольким полям, используя либо Or, либо And:

$query = $users->findByUsernameOrEmail('mark', 'mark@example.org');

Массовое обновление/удаление

Вы можете использовать Table::updateAll() и Table::deleteAll() для массового обновления/удаления. Следует учитывать, что события не будут срабатывать при массовом обновлении/удалении.

События

Объекты Table генерируют несколько событий в качестве событий жизненного цикла во время операций поиска, удаления и сохранения. Все события используют пакет событий CakePHP:

  • Model.beforeFind Срабатывает перед каждой операцией поиска. Остановив событие и предоставив возвращаемое значение, вы можете полностью пропустить операцию поиска. Все изменения, внесенные в экземпляр $query, будут сохранены для дальнейшего поиска. Параметр $primary указывает, является ли это запросом верхнего уровня или запросом связанной таблицы.

  • Model.buildValidator Позволяет слушателям изменять правила валидации для предоставленного валидатора с именем.

  • Model.buildRules Позволяет слушателям изменять проверяющий правила, добавляя дополнительные правила.

  • Model.beforeRules Срабатывает перед проверкой сущности с использованием проверяющего правил. Остановив это событие, вы можете вернуть окончательное значение операции проверки правил.

  • Model.afterRules Срабатывает после проверки правил на сущности. Остановив это событие, вы можете вернуть окончательное значение операции проверки правил.

  • Model.beforeSave Срабатывает перед сохранением каждой сущности. Остановка этого события прервёт операцию сохранения. Когда событие остановлено, результат события будет возвращён.

  • Model.afterSave Срабатывает после сохранения сущности.

  • Model.afterSaveCommit Срабатывает после подтверждения транзакции, в которую обернута операция сохранения. Также срабатывает для неатомарных сохранений, где операции базы данных неявно подтверждаются. Событие срабатывает только для основной таблицы, на которой непосредственно вызывается save(). Событие не срабатывает, если транзакция начата перед вызовом save.

  • Model.beforeDelete Срабатывает перед удалением сущности. Остановив это событие, вы прервете операцию удаления.

  • Model.afterDelete Срабатывает после удаления сущности.

Обработчики

Вы можете подписаться на перечисленные выше события в своих классах таблиц, реализовав методы жизненного цикла ниже:

  • beforeFind(EventInterface $event, Query $query, ArrayObject $options, boolean $primary)
  • beforeMarshal(EventInterface $event, ArrayObject $data, ArrayObject $options)
  • afterMarshal(EventInterface $event, EntityInterface $entity, ArrayObject $options)
  • buildValidator(EventInterface $event, Validator $validator, string $name)
  • buildRules(RulesChecker $rules)
  • beforeRules(EventInterface $event, EntityInterface $entity, ArrayObject $options, string $operation)
  • afterRules(EventInterface $event, EntityInterface $entity, ArrayObject $options, bool $result, string $operation)
  • beforeSave(EventInterface $event, EntityInterface $entity, ArrayObject $options)
  • afterSave(EventInterface $event, EntityInterface $entity, ArrayObject $options)
  • afterSaveCommit(EventInterface $event, EntityInterface $entity, ArrayObject $options)
  • beforeDelete(EventInterface $event, EntityInterface $entity, ArrayObject $options)
  • afterDelete(EventInterface $event, EntityInterface $entity, ArrayObject $options)
  • afterDeleteCommit(EventInterface $event, EntityInterface $entity, ArrayObject $options)
Пространство имён: Cake\ORM
См.: \Cake\Event\EventManager для справки по системе событий.
Ссылка: https://book.cakephp.org/4/en/orm/table-objects.html#event-list

Константы

  • string
    BUILD_VALIDATOR_EVENT
    'Model.buildValidator'

    Название события, отправляемого при построении валидатора.

  • string
    DEFAULT_VALIDATOR
    'default'

    Имя набора по умолчанию для проверки.

  • string
    IS_UNIQUE_CLASS
    IsUnique::class

    Имя класса IsUnique, которое используется.

  • string
    RULES_CLASS
    RulesChecker::class

    Имя класса правил, которое используется.

  • string
    VALIDATOR_PROVIDER_NAME
    'table'

    Псевдоним, назначенный этому объекту как валидаторам.

Резюме свойств

  • $_alias protected
    string|null

    Человеческое имя, присвоенное этому конкретному экземпляру. Несколько объектов, представляющих одну и ту же таблицу базы данных, могут существовать с использованием разных псевдонимов.

  • $_associations protected
    Cake\ORM\AssociationCollection

    Контейнер ассоциаций для этой Таблицы.

  • $_behaviors protected
    Cake\ORM\BehaviorRegistry

    BehaviorRegistry для этой таблицы

  • $_connection protected
    Cake\Database\Connection|null

    Экземпляр подключения

  • $_displayField protected
    array<string>|string|null

    Имя поля, представляющего удобочитаемое представление строки

  • $_entityClass protected
    string

    Имя класса, представляющего отдельную строку для этой таблицы

  • $_eventClass protected
    string

    Имя класса по умолчанию для новых объектов событий.

  • $_eventManager protected
    Cake\Event\EventManagerInterface|null

    Экземпляр Cake\Event\EventManager, используемый этим объектом для отправки внутренних событий.

  • $_primaryKey protected
    array<string>|string|null

    Имя поля, представляющего первичный ключ в таблице

  • $_registryAlias protected
    string|null

    Ключ реестра, используемый для создания этого объекта таблицы

  • $_rulesChecker protected
    Cake\Datasource\RulesChecker

    Правила домена, применяемые к сущностям, сохраняемым этой таблицей

  • $_schema protected
    Cake\Database\Schema\TableSchemaInterface|null

    Объект схемы, содержащий описание полей этой таблицы

  • $_table protected
    string|null

    Имя таблицы, как оно может быть найдено в базе данных

  • $_validatorClass protected
    string

    Класс валидатора.

  • $_validators protected
    arrayCake\Validation\Validator>

    Список объектов валидации, индексированных по имени

Краткое описание методов

  • __call() public

    Обрабатывает делегирование поведения + динамические поисковики.

  • __construct() public

    Инициализирует новый экземпляр

  • __debugInfo() public

    Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.

  • __get() public

    Возвращает ассоциацию, названную по переданному значению, если она существует, в противном случае генерирует исключение.

  • __isset() public

    Возвращает, существует ли ассоциация, названная по переданному значению, для этой таблицы.

  • _deleteMany() protected
  • _dynamicFinder() protected

    Предоставляет динамические методы findBy и findAllBy.

  • _executeTransaction() protected

    Обрабатывает логику выполнения работника внутри транзакции.

  • _getFindOrCreateQuery() protected

    Получает объект запроса для findOrCreate().

  • _initializeSchema() protected

    Переопределите эту функцию, чтобы изменить схему, используемую этой таблицей. Эта функция вызывается только после извлечения схемы из базы данных. Если вы хотите предоставить собственную схему для этой таблицы, не затрагивая базу данных, вы можете переопределить schema() или ввести определения через этот метод.

  • _insert() protected

    Вспомогательная функция для обработки вставки данных сущности в таблицу

  • _newId() protected

    Генерирует значение первичного ключа для новой записи.

  • _onSaveSuccess() protected

    Обрабатывает сохранение ассоциаций дочерних элементов и выполняет логику afterSave после успешного сохранения сущности для этой таблицы.

  • _processDelete() protected

    Выполнить операцию удаления.

  • _processFindOrCreate() protected

    Выполняет фактическое нахождение и/или создание сущности на основе переданных параметров.

  • _processSave() protected

    Выполняет фактическое сохранение сущности на основе переданных параметров.

  • _saveMany() protected
  • _setFieldMatchers() protected

    Из массива параметров, проверьте, являются ли ключи, описанные в $keys массивами, и измените значения на замыкания, которые будут конкатенировать каждый из свойств в массиве значений при передаче строки.

  • _transactionCommitted() protected

    Проверяет, выполнил ли вызывающий объект фиксацию транзакции.

  • _update() protected

    Вспомогательная функция для обработки обновления данных сущности в таблице

  • addAssociations() public

    Настройка нескольких ассоциаций.

  • addBehavior() public

    Добавить поведение.

  • addBehaviors() public

    Добавляет массив поведений в коллекцию поведений таблицы.

  • aliasField() public

    Псевдоним поля с текущим псевдонимом таблицы.

  • associations() public

    Получить коллекцию ассоциаций для этой таблицы.

  • behaviors() public

    Возвращает реестр поведения для этой таблицы.

  • belongsTo() public

    Создает новую ассоциацию BelongsTo между этой таблицей и целевой таблицей. Ассоциация "belongs to" — это отношение N-1, где эта таблица — сторона N, и для каждой записи в этой таблице существует одна связанная запись в целевой таблице.

  • belongsToMany() public

    Создает новую ассоциацию BelongsToMany между этой таблицей и целевой таблицей. Ассоциация "belongs to many" — это отношение M-N.

  • buildRules() public

    Возвращает объект RulesChecker после изменения предоставленного.

  • callFinder() public

    Вызывает метод поиска и применяет его к переданному запросу.

  • checkAliasLengths() protected

    Проверяет, соответствуют ли все сочетания имени таблицы + имени столбца, используемые для запросов, максимальной длине, разрешенной драйвером базы данных.

  • checkRules() public

    Возвращает, соответствует ли переданная сущность всем правилам, хранящимся в контроллере правил.

  • createValidator() protected

    Создает валидатор, используя пользовательский метод внутри вашего класса.

  • defaultConnectionName() public static

    Получить имя подключения по умолчанию.

  • delete() public

    Удалить одну сущность.

  • deleteAll() public

    Удаляет все записи, соответствующие предоставленным условиям.

  • deleteMany() public

    Удаляет несколько сущностей таблицы.

  • deleteManyOrFail() public

    Удаляет несколько сущностей таблицы.

  • deleteOrFail() public

    Попытаться удалить сущность или выбросить PersistenceFailedException, если сущность новая, не имеет значения первичного ключа, проверки правил приложения не пройдены или удаление было прервано обратным вызовом.

  • dispatchEvent() public

    Обёртка для создания и отправки событий.

  • exists() public

    Возвращает true, если в этом репозитории есть какая-либо запись, соответствующая указанным условиям.

  • find() public

    Создает новый запрос для этого хранилища и применяет некоторые значения по умолчанию, основанные на типе выполненного поиска.

  • findAll() public

    Возвращает запрос в переданном виде.

  • findAssociation() protected

    Возвращает объект ассоциации, настроенный для указанного псевдонима, если он есть.

  • findList() public

    Настраивает объект запроса, чтобы результаты отображались в виде индексированного массива, что полезно для любых мест, где требуется список, например, для заполнения элементов select.

  • findOrCreate() public

    Находит существующую запись или создаёт новую.

  • findThreaded() public

    Результаты этого поиска будут вложенным массивом, и это подходит, если вы хотите использовать поле parent_id данных вашей модели для построения вложенных результатов.

  • get() public

    Возвращает одну запись после её поиска по первичному ключу; если запись не найдена, этот метод выбрасывает исключение.

  • getAlias() public

    Возвращает псевдоним таблицы.

  • getAssociation() public

    Возвращает объект ассоциации, настроенный для указанного псевдонима.

  • getBehavior() public

    Получает поведение из реестра.

  • getConnection() public

    Возвращает экземпляр соединения.

  • getDisplayField() public

    Возвращает поле отображения.

  • getEntityClass() public

    Возвращает класс, используемый для гидратации строк для этой таблицы.

  • getEventManager() public

    Возвращает экземпляр менеджера Cake\Event\EventManager для этого объекта.

  • getPrimaryKey() public

    Возвращает имя поля первичного ключа.

  • getRegistryAlias() public

    Возвращает ключ реестра таблицы, используемый для создания этого экземпляра таблицы.

  • getSaveOptionsBuilder() public

    Получает экземпляр SaveOptionsBuilder.

  • getSchema() public

    Возвращает объект схемы таблицы, описывающий свойства этой таблицы.

  • getTable() public

    Возвращает имя таблицы базы данных.

  • getValidator() public

    Возвращает правила проверки, помеченные тегом $name. Возможны несколько наборов правил с разными именами, что полезно, когда вам нужны разные правила при сохранении из разных процедур вашей системы.

  • hasAssociation() public

    Проверяет, существует ли определённая ассоциация в этом экземпляре Table.

  • hasBehavior() public

    Проверяет, загружено ли поведение с данным псевдонимом.

  • hasField() public

    Проверяет, содержит ли таблица определённое поле/столбец.

  • hasFinder() public

    Возвращает true, если поиск существует для таблицы

  • hasMany() public

    Создаёт новую ассоциацию HasMany между этой таблицей и целевой таблицей. Ассоциация «имеет много» — это отношение 1-N.

  • hasOne() public

    Создаёт новую ассоциацию HasOne между этой таблицей и целевой таблицей. Ассоциация «имеет один» — это отношение 1-1.

  • hasValidator() public

    Проверяет, установлен ли валидатор.

  • implementedEvents() public

    Получает обратные вызовы модели, которыми интересуется эта таблица.

  • initialize() public

    Инициализирует экземпляр таблицы. Вызывается после конструктора.

  • loadInto() public

    Загружает указанные ассоциации в переданный объект или список объектов, выполняя дополнительные запросы в базе данных и объединяя результаты в соответствующие свойства.

  • marshaller() public

    Получает объект, используемый для маршалинга/преобразования данных массива в объекты.

  • newEmptyEntity() public

    Создаёт новый объект сущности.

  • newEntities() public

    Создаёт список сущностей + связанных сущностей из массива.

  • newEntity() public

    Создаёт новую сущность + связанные сущности из массива.

  • patchEntities() public

    Объединяет каждый из переданных элементов $data в сущности, найденные в $entities, учитывая доступные поля, настроенные в сущностях. Объединение выполняется путём сопоставления первичного ключа в каждом из элементов в $data и $entities.

  • patchEntity() public

    Объединяет переданный $data в $entity, учитывая доступные поля, настроенные в сущности. Возвращает ту же сущность после изменения.

  • query() public

    Создаёт новый экземпляр Query для таблицы.

  • removeBehavior() public

    Удаляет поведение из реестра поведения этой таблицы.

  • rulesChecker() public

    Возвращает RulesChecker для этого экземпляра.

  • save() public

    Сохраняет сущность на основе полей, помеченных как изменённые, и возвращает ту же сущность после успешного сохранения или false в случае ошибки.

  • saveMany() public

    Сохраняет множество сущностей таблицы.

  • saveManyOrFail() public

    Сохраняет множество сущностей таблицы.

  • saveOrFail() public

    Попытаться сохранить сущность или выбросить исключение PersistenceFailedException, если проверки правил приложения завершились неудачно, сущность содержит ошибки или сохранение было прервано обратным вызовом.

  • setAlias() public

    Устанавливает псевдоним таблицы.

  • setConnection() public

    Устанавливает экземпляр соединения.

  • setDisplayField() public

    Устанавливает поле отображения.

  • setEntityClass() public

    Устанавливает класс, используемый для гидратации строк для этой таблицы.

  • setEventManager() public

    Возвращает экземпляр Cake\Event\EventManagerInterface для этого объекта.

END_OF_DOCUMENT_MARKER
  • setPrimaryKey() public

    Устанавливает имя поля первичного ключа.

  • setRegistryAlias() public

    Устанавливает ключ реестра таблицы, используемый для создания экземпляра этой таблицы.

  • setSchema() public

    Устанавливает объект схемы таблицы, описывающий свойства этой таблицы.

  • setTable() public

    Устанавливает имя таблицы базы данных.

  • setValidator() public

    Этот метод сохраняет пользовательский валидатор под заданным именем.

  • subquery() public

    Создаёт новый экземпляр Query::subquery() для таблицы.

  • updateAll() public

    Обновить все соответствующие записи.

  • validateUnique() public

    Метод валидации, используемый для проверки уникальности значения для столбца. Он предназначен для использования с API валидации и не должен вызываться напрямую.

  • validationDefault() public

    Возвращает объект валидатора по умолчанию. Подклассы могут переопределить эту функцию, чтобы добавить набор валидации по умолчанию в объект валидатора.

  • validationMethodExists() protected

    Проверяет существование метода валидации.

Подробное описание методов

__call() public

__call(string $method, array $args): mixed

Обработка делегирования поведения + динамических методов поиска.

Если ваша таблица использует какое-либо поведение, вы можете вызвать его, как если бы он был в объекте таблицы.

Параметры

string $method

название метода, который нужно вызвать

array $args

Список аргументов, переданных функции

Возвращает

mixed

Исключения

BadMethodCallException

__construct() public

__construct(array<string, mixed> $config = [])

Инициализирует новый экземпляр

Массив $config понимает следующие ключи:

  • table: Имя таблицы базы данных для представления
  • alias: Псевдоним, который будет назначен этой таблице (по умолчанию - имя таблицы)
  • connection: Экземпляр подключения, который нужно использовать
  • entityClass: Полное имя класса сущности, который будет представлять строки в этой таблице.
  • schema: Объект \Cake\Database\Schema\TableSchemaInterface или массив, который можно передать в него.
  • eventManager: Экземпляр менеджера событий для использования для внутренних событий
  • behaviors: Объект BehaviorRegistry. Обычно не используется вне тестов.
  • associations: Экземпляр AssociationCollection.
  • validator: Экземпляр Validator, который назначается как набор валидации «по умолчанию», или ассоциативный массив, где ключ — имя набора валидации, а значение — экземпляр Validator.

Параметры

array<string, mixed> $config необязательный

Список параметров для этой таблицы

__debugInfo() public

__debugInfo(): array

Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.

Возвращает

array

__get() public

__get(string $property): Cake\ORM\Association

Возвращает ассоциацию, названную по переданному значению, если она существует, в противном случае генерирует исключение.

Параметры

string $property

имя ассоциации

Возвращает

Cake\ORM\Association

Исключения

RuntimeException
если ассоциация с таким именем не существует

__isset() public

__isset(string $property): bool

Возвращает, существует ли ассоциация, названная по переданному значению, для этой таблицы.

Параметры

string $property

имя ассоциации

Возвращает

bool

_deleteMany() protected

_deleteMany(Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface> $entities, ArrayAccess|array $options = []): Cake\Datasource\EntityInterface|null

Параметры

Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface> $entities

Сущности для удаления.

ArrayAccess|array $options необязательный

Используемые параметры.

Возвращает

Cake\Datasource\EntityInterface|null

_dynamicFinder() protected

_dynamicFinder(string $method, array $args): Cake\ORM\Query

Предоставляет динамические методы findBy и findAllBy.

Параметры

string $method

Имя метода, который был вызван.

array $args

Список аргументов, переданных функции.

Возвращает

Cake\ORM\Query

Исключения

BadMethodCallException
при отсутствии аргументов или при совместном использовании &, & или or.

_executeTransaction() protected

_executeTransaction(callable $worker, bool $atomic = true): mixed

Обрабатывает логику выполнения работника внутри транзакции.

Параметры

callable $worker

Работник, который будет выполняться внутри транзакции.

bool $atomic необязательный

Выполнять ли работника внутри транзакции базы данных.

Возвращает

mixed

_getFindOrCreateQuery() protected

_getFindOrCreateQuery(Cake\ORM\Query|callable|array $search): Cake\ORM\Query

Возвращает объект запроса для findOrCreate().

Параметры

Cake\ORM\Query|callable|array $search

Критерии для поиска существующих записей.

Возвращает

Cake\ORM\Query

_initializeSchema() protected

_initializeSchema(Cake\Database\Schema\TableSchemaInterface $schema): Cake\Database\Schema\TableSchemaInterface

Переопределите эту функцию для изменения схемы, используемой этой таблицей. Эта функция вызывается только после извлечения схемы из базы данных. Если вы хотите предоставить свою собственную схему этой таблице, не затрагивая базу данных, вы можете переопределить schema() или внедрить определения через этот метод.

Пример:

protected function _initializeSchema(\Cake\Database\Schema\TableSchemaInterface $schema) {
 $schema->setColumnType('preferences', 'json');
 return $schema;
}

Параметры

Cake\Database\Schema\TableSchemaInterface $schema

Определение таблицы, извлеченное из базы данных.

Возвращает

Cake\Database\Schema\TableSchemaInterface

_insert() protected

_insert(Cake\Datasource\EntityInterface $entity, array $data): Cake\Datasource\EntityInterface|false

Вспомогательная функция для обработки вставки данных сущности в таблицу

Параметры

Cake\Datasource\EntityInterface $entity

сущности, из которой были извлечены $данные

array $data

Фактические данные, которые необходимо сохранить

Возвращает

Cake\Datasource\EntityInterface|false

Исключения

RuntimeException
если не были предоставлены все первичные ключи или не могли быть сгенерированы, когда таблица имеет составные первичные ключи. Или когда у таблицы нет первичного ключа.

_newId() protected

_newId(array<string> $primary): string|null

Генерирует значение первичного ключа для новой записи.

По умолчанию это использует систему типов для генерации нового значения первичного ключа, если это возможно. Вы можете переопределить этот метод, если у вас есть особые требования к генерации идентификаторов.

Примечание. СУОБ не будет генерировать значения первичного ключа для составных первичных ключей. Вы можете переопределить _newId() в вашем классе таблицы.

Параметры

array<string> $primary

Столбцы первичного ключа, для которых нужно получить новый идентификатор.

Возвращает

string|null

_onSaveSuccess() protected

_onSaveSuccess(Cake\Datasource\EntityInterface $entity, ArrayObject $options): bool

Обрабатывает сохранение связанных ассоциаций дочерних элементов и выполнение логики afterSave после успешного сохранения сущности этой таблицы.

Параметры

Cake\Datasource\EntityInterface $entity

сущность, которая должна быть сохранена

ArrayObject $options

параметры для операции сохранения

Возвращает

bool

Исключения

Cake\ORM\Exception\RolledbackTransactionException
Если транзакция прервана в событии afterSave.

_processDelete() protected

_processDelete(Cake\Datasource\EntityInterface $entity, ArrayObject $options): bool

Выполняет операцию удаления.

Удалить предоставленную сущность. Удалить строки из любых зависимых ассоциаций и очистить таблицы соединений для ассоциаций BelongsToMany.

Параметры

Cake\Datasource\EntityInterface $entity

Сущность для удаления.

ArrayObject $options

Параметры для удаления.

Возвращает

bool

Исключения

InvalidArgumentException
если нет значений первичного ключа переданной сущности

_processFindOrCreate() protected

_processFindOrCreate(Cake\ORM\Query|callable|array $search, callable|null $callback = null, array<string, mixed> $options = []): Cake\Datasource\EntityInterface|array

Выполняет фактический поиск и/или создание сущности на основе переданных параметров.

Параметры

Cake\ORM\Query|callable|array $search

Критерии поиска существующей записи или вызываемая функция, которая настраивает запрос поиска.

callable|null $callback необязательный

Обратный вызов, который будет вызван для вновь созданных сущностей. Этот обратный вызов будет вызван перед сохранением сущности.

array<string, mixed> $options необязательный

Параметры, которые нужно использовать при сохранении.

Возвращает

Cake\Datasource\EntityInterface|array

Исключения

Cake\ORM\Exception\PersistenceFailedException
Когда сущность не может быть сохранена
InvalidArgumentException

_processSave() protected

_processSave(Cake\Datasource\EntityInterface $entity, ArrayObject $options): Cake\Datasource\EntityInterface|false

Выполняет фактическое сохранение сущности на основе переданных параметров.

Параметры

Cake\Datasource\EntityInterface $entity

сохраняемая сущность

ArrayObject $options

параметры для операции сохранения

Возвращает

Cake\Datasource\EntityInterface|false

Вызывает исключения

RuntimeException
При отсутствии некоторых первичных ключей в сущности.
Cake\ORM\Exception\RolledbackTransactionException
Если транзакция прервана в событии afterSave.

_saveMany() protected

_saveMany(Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface> $entities, Cake\ORM\SaveOptionsBuilderArrayAccess|array $options = []): Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface>

Параметры

Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface> $entities

Сущности для сохранения.

Cake\ORM\SaveOptionsBuilderArrayAccess|array $options optional

Параметры, используемые при вызове Table::save() для каждой сущности.

Возвращает

Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface>

Вызывает исключения

Cake\ORM\Exception\PersistenceFailedException
Если сущность не может быть сохранена.
Exception
Если сущность не может быть сохранена.

_setFieldMatchers() protected

_setFieldMatchers(array<string, mixed> $options, array<string> $keys): array

Из массива параметров проверяет, являются ли ключи, описанные в $keys, массивами, и изменяет значения на замыкания, которые будут конкатенировать каждую из свойств в массиве значений при передаче строки.

Это вспомогательная функция, используемая для форматеров результатов, которые могут принимать составные ключи при сравнении значений.

Параметры

array<string, mixed> $options

исходные параметры, переданные в finder

array<string> $keys

ключи для проверки в $options для создания сопоставителей из связанного значения

Возвращает

array

_transactionCommitted() protected

_transactionCommitted(bool $atomic, bool $primary): bool

Проверяет, выполнил ли вызывающий объект операцию коммита транзакции.

Параметры

bool $atomic

Истина, если использовалась атомарная транзакция.

bool $primary

Истина, если использовался первичный ключ.

Возвращает

bool

_update() protected

_update(Cake\Datasource\EntityInterface $entity, array $data): Cake\Datasource\EntityInterface|false

Вспомогательная функция для обработки обновления данных сущности в таблице

Параметры

Cake\Datasource\EntityInterface $entity

сущность, из которой были извлечены $data

array $data

Фактические данные, которые необходимо сохранить

Возвращает

Cake\Datasource\EntityInterface|false

Вызывает исключения

InvalidArgumentException
При отсутствии данных первичного ключа.

addAssociations() public

addAssociations(array $params): $this

Настройка нескольких ассоциаций.

В качестве аргумента передается массив, содержащий набор имен таблиц, индексированных по типу ассоциации:

$this->Posts->addAssociations([
  'belongsTo' => [
    'Users' => ['className' => 'App\Model\Table\UsersTable']
  ],
  'hasMany' => ['Comments'],
  'belongsToMany' => ['Tags']
]);

Каждый тип ассоциации принимает несколько ассоциаций, где ключи — псевдонимы, а значения — данные конфигурации ассоциации. Если используются числовые ключи, значения будут обрабатываться как псевдонимы ассоциаций.

Параметры

array $params

Набор ассоциаций для привязки (индексированных по типу ассоциации)

Возвращает

$this

См. также

\Cake\ORM\Table::belongsTo()
\Cake\ORM\Table::hasOne()
\Cake\ORM\Table::hasMany()
\Cake\ORM\Table::belongsToMany()

addBehavior() public

addBehavior(string $name, array<string, mixed> $options = []): $this

Добавление поведения.

Добавляет поведение в коллекцию поведений этой таблицы. Поведения обеспечивают простой способ создания горизонтально повторно используемых функций, которые могут предоставлять функциональность типа траита и позволяют прослушивать события.

Пример:

Загрузка поведения с некоторыми настройками.

$this->addBehavior('Tree', ['parent' => 'parentId']);

Поведения обычно загружаются во время Table::initialize().

Параметры

string $name

Имя поведения. Может быть коротким ссылкой на класс.

array<string, mixed> $options optional

Параметры для использования поведения.

Возвращает

$this

Вызывает исключения

RuntimeException
При повторной загрузке поведения.

См. также

\Cake\ORM\Behavior

addBehaviors() public

addBehaviors(array $behaviors): $this

Добавляет массив поведений в коллекцию поведений таблицы.

Пример:

$this->addBehaviors([
     'Timestamp',
     'Tree' => ['level' => 'level'],
]);

Параметры

array $behaviors

Все поведения для загрузки.

Возвращает

$this

Вызывает исключения

RuntimeException
При повторной загрузке поведения.

aliasField() public

aliasField(string $field): string

Присваивает псевдоним полю с текущим псевдонимом таблицы.

Если поле уже имеет псевдоним, результатом будет no-op.

Параметры

string $field

Поле для присвоения псевдонима.

Возвращает

string

associations() public

associations(): Cake\ORM\AssociationCollection

Получение коллекции ассоциаций для этой таблицы.

Возвращает

Cake\ORM\AssociationCollection

behaviors() public

behaviors(): Cake\ORM\BehaviorRegistry

Возвращает реестр поведений для этой таблицы.

Возвращает

Cake\ORM\BehaviorRegistry

belongsTo() public

belongsTo(string $associated, array<string, mixed> $options = []): Cake\ORM\Association\BelongsTo

Создает новую ассоциацию BelongsTo между этой таблицей и целевой таблицей. Ассоциация "belongs to" — это отношение N-1, где эта таблица — сторона N, а для каждого запии в этой таблице существует единственная связанная запись в целевой таблице.

Целевая таблица может быть определена по ее имени, которое предоставляется в первом аргументе, или вы можете либо передать экземпляр для инициализации, либо напрямую передать экземпляр.

Массив параметров может содержать следующие ключи:

  • className: Имя класса объекта целевой таблицы
  • targetTable: Экземпляр объекта таблицы, используемый в качестве целевой таблицы
  • foreignKey: Имя поля, используемого в качестве внешнего ключа; если ложно, внешний ключ не используется
  • conditions: массив с списком условий для фильтрации объединения
  • joinType: Тип объединения (например, INNER)
  • strategy: Стратегия загрузки. Поддерживаются 'join' и 'select'.
  • finder: Метод поиска для загрузки записей из этой ассоциации. По умолчанию 'all'. Когда стратегия 'join', только поля, включения и условия where будут использоваться из поиска.

Этот метод вернет объект ассоциации, который был создан.

Параметры

string $associated

псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации

array<string, mixed> $options optional

список параметров для настройки определения ассоциации

Возвращает

Cake\ORM\Association\BelongsTo

belongsToMany() public

belongsToMany(string $associated, array<string, mixed> $options = []): Cake\ORM\Association\BelongsToMany

Создаёт новую ассоциацию BelongsToMany между этой таблицей и целевой таблицей. Ассоциация «belongs to many» — это отношение М-К.

Целевую таблицу можно определить по её имени, которое указывается в первом аргументе, или можно передать имя класса для создания экземпляра, или непосредственно экземпляр класса.

Массив параметров принимает следующие ключи:

  • className: Имя класса объекта целевой таблицы.
  • targetTable: Экземпляр объекта таблицы, используемый в качестве целевой таблицы.
  • foreignKey: Название поля, используемого в качестве внешнего ключа.
  • targetForeignKey: Название поля, используемого в качестве внешнего ключа целевой таблицы.
  • joinTable: Название таблицы, представляющей связь между двумя таблицами.
  • through: Если вы решили использовать уже созданную таблицу связи, установите этот ключ на экземпляр Table, содержащий ассоциации с исходной и целевой таблицами в данной ассоциации.
  • dependent: Установите в значение false, если вы не хотите удалять записи таблицы соединения при удалении записи владельца.
  • cascadeCallbacks: Установите в значение true, если вы хотите, чтобы CakePHP запускал обратные вызовы при каскадных удалениях. Если false, ORM будет использовать deleteAll() для удаления данных. При значении true, записи таблицы соединения будут загружены, а затем удалены.
  • conditions: массив с перечнем условий для фильтрации соединения.
  • sort: Порядок, в котором должны возвращаться результаты этой ассоциации.
  • strategy: Стратегия, используемая для выбора результатов. Доступны 'select' и 'subquery'. Если выбрана стратегия 'subquery', запрос, используемый для возврата результатов в исходной таблице, будет использован как условия для получения строк в целевой таблице.
  • saveStrategy: 'append' или 'replace'. Указывает режим, используемый для сохранения связанных сущностей. Первый вариант создаст только новые ссылки между обеими сторонами отношения, а второй — очистит и перезапишет, чтобы создать ссылки между переданными сущностями при сохранении.
  • strategy: Стратегия загрузки. Поддерживаются 'select' и 'subquery'.
  • finder: Метод поиска, используемый при загрузке записей из этой ассоциации. По умолчанию — 'all'.

Этот метод возвращает объект ассоциации, который был создан.

Параметры

$associated

псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации.

$options optional

список параметров для настройки определения ассоциации.

Возвращает

Cake\ORM\Association\BelongsToMany

buildRules() public

buildRules(Cake\Datasource\RulesChecker $rules): Cake\ORM\RulesChecker

Возвращает объект RulesChecker после модификации объекта, переданного в качестве аргумента.

Подклассы должны переопределять этот метод, чтобы инициализировать правила, которые будут применяться к сущностям, сохранённым этим экземпляром.

Параметры

$rules

Объект правил, который должен быть изменён.

Возвращает

Cake\ORM\RulesChecker

callFinder() public

callFinder(string $type, Cake\ORM\Query $query, array<string, mixed> $options = []): Cake\ORM\Query

Вызывает метод поиска и применяет его к переданному запросу.

Параметры

$type

Имя вызываемого метода поиска.

$query

Объект запроса, к которому применяются параметры метода поиска.

$options optional

Список параметров, передаваемых методу поиска.

Возвращает

Cake\ORM\Query

Выбрасывает

BadMethodCallException

checkAliasLengths() protected

checkAliasLengths(): void

Проверяет, помещаются ли все сочетания имен таблиц и столбцов, используемые в запросах, в максимальную длину, разрешённую драйвером базы данных.

Возвращает

void

Выбрасывает

RuntimeException
При слишком большой длине сочетания псевдонимов

checkRules() public

checkRules(Cake\Datasource\EntityInterface $entity, string $operation = RulesChecker::CREATE, ArrayObject|array|null $options = null): bool

Возвращает, соответствует ли переданная сущность всем правилам, хранящимся в проверяющем объекте правил.

Параметры

$entity

Сущность, проверяемая на корректность.

$operation optional

Выполняемая операция. Может быть 'create', 'update' или 'delete'.

$options optional

Параметры, передаваемые правилам.

Возвращает

bool

createValidator() protected

createValidator(string $name): Cake\Validation\Validator

Создаёт валидатор с использованием пользовательского метода внутри вашего класса.

Этот метод используется только для создания нового валидатора и не сохраняет его в вашем объекте. Если вы хотите создать и повторно использовать валидаторы, используйте метод getValidator().

Параметры

$name

Имя набора валидации, который нужно создать.

Возвращает

Cake\Validation\Validator

Выбрасывает

RuntimeException

defaultConnectionName() public static

defaultConnectionName(): string

Получить имя соединения по умолчанию.

Этот метод используется для получения имени соединения по умолчанию, если экземпляр создаётся через TableLocator без указания соединения.

Возвращает

string

См. также

\Cake\ORM\Locator\TableLocator::get()

delete() public

delete(Cake\Datasource\EntityInterface $entity, ArrayAccess|array $options = []): bool

Удалить одну сущность.

Для ассоциаций HasMany и HasOne записи будут удалены в зависимости от параметра dependent. Записи таблицы соединения в ассоциациях BelongsToMany всегда будут удалены. Вы можете использовать параметр cascadeCallbacks при определении ассоциаций, чтобы изменить способ удаления связанных данных.

Параметры

  • atomic По умолчанию true. При значении true удаление происходит в транзакции.
  • checkRules По умолчанию true. Проверка правил удаления перед удалением записи.

События

  • Model.beforeDelete Срабатывает перед выполнением удаления. Если остановлено, удаление будет прервано. Принимает событие, сущность и параметры.
  • Model.afterDelete Срабатывает после успешного выполнения удаления. Принимает событие, сущность и параметры.
  • Model.afterDeleteCommit Срабатывает после подтверждения транзакции при атомарном удалении. Принимает событие, сущность и параметры.

Аргумент options будет преобразован в экземпляр \ArrayObject на период обработки обратных вызовов. Это позволяет слушателям изменять параметры, используемые в операции удаления.

Параметры

$entity

Сущность, которую нужно удалить.

$options optional

Параметры для удаления.

Возвращает

bool

deleteAll() public

deleteAll(mixed $conditions): int

Удаляет все записи, соответствующие заданным условиям.

Этот метод не вызовет события beforeDelete/afterDelete. Если вам нужны эти события, сначала загрузите коллекцию записей и удалите их.

Этот метод не будет выполняться для атрибута cascade ассоциаций. Если вам нужно каскадное удаление вместе с этим методом, используйте внешние ключи базы данных + правила ON CASCADE.

Параметры

$conditions

Возвращает

int

deleteMany() public

deleteMany(Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface> $entities, ArrayAccess|array $options = []): Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface>|false

Удаляет несколько сущностей таблицы.

Записи будут удалены в транзакции, которая будет откачена, если удаление одной из записей завершится неудачей из-за несоответствия валидации или ошибки базы данных.

Параметры

$entities

Сущности для удаления.

$options optional

Параметры, используемые при вызове Table::save() для каждой сущности.

Возвращает

Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface>|false

См. также

\Cake\ORM\Table::delete() для параметров и событий, связанных с этим методом.

deleteManyOrFail() public

deleteManyOrFail(Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface> $entities, ArrayAccess|array $options = []): Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface>

Удаляет несколько сущностей таблицы.

Записи будут удалены в транзакции, которая будет откачена, если удаление одной из записей завершится неудачей из-за несоответствия валидации или ошибки базы данных.

Параметры

$entities

Сущности для удаления.

$options optional

Параметры, используемые при вызове Table::save() для каждой сущности.

Возвращает

Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface>

Выбрасывает

Cake\ORM\Exception\PersistenceFailedException

См. также

\Cake\ORM\Table::delete() для параметров и событий, связанных с этим методом.

deleteOrFail() public

deleteOrFail(Cake\Datasource\EntityInterface $entity, ArrayAccess|array $options = []): true

Попытка удалить сущность или выбросить PersistenceFailedException, если сущность новая, не имеет значения первичного ключа, проверки правил приложения завершились неудачно или удаление было прервано обратным вызовом.

Параметры

Cake\Datasource\EntityInterface $entity

Удаляемая сущность.

ArrayAccess|array $options optional

Параметры для удаления.

Возвращает

true

Выбрасывает

Cake\ORM\Exception\PersistenceFailedException

См. также

\Cake\ORM\Table::delete()

dispatchEvent() public

dispatchEvent(string $name, array|null $data = null, object|null $subject = null): Cake\Event\EventInterface

Обёртка для создания и отправки событий.

Возвращает отправленное событие.

Параметры

string $name

Имя события.

array|null $data optional

Любое значение, которое вы хотите передать с этим событием, чтобы его могли прочитать слушатели.

object|null $subject optional

Объект, к которому относится это событие (по умолчанию $this).

Возвращает

Cake\Event\EventInterface

exists() public

exists(array $conditions): bool

Возвращает true, если в этом репозитории есть запись, соответствующая указанным условиям.

Параметры

array $conditions

Возвращает

bool

find() public

find(string $type = 'all', array<string, mixed> $options = []): Cake\ORM\Query

Создаёт новый запрос для этого репозитория и применяет некоторые значения по умолчанию, основанные на типе выбранного поиска.

Событие Model.beforeFind

Каждый find() вызовет событие Model.beforeFind для всех присоединённых слушателей. Любой слушатель может установить корректный результат запроса, используя $query

По умолчанию, $options распознает следующие ключи:

  • fields
  • conditions
  • order
  • limit
  • offset
  • page
  • group
  • having
  • contain
  • join

Использование

Использование массива опций:

$query = $articles->find('all', [
  'conditions' => ['published' => 1],
  'limit' => 10,
  'contain' => ['Users', 'Comments']
]);

Использование интерфейса билдера:

$query = $articles->find()
  ->where(['published' => 1])
  ->limit(10)
  ->contain(['Users', 'Comments']);

Вызов находок

Метод find() — точка входа для пользовательских методов поиска. Вы можете вызвать поиск, указав тип:

$query = $articles->find('published');

Вызовет метод findPublished.

Параметры

string $type optional

тип запроса

array<string, mixed> $options optional

Массив, который будет передан в Query::applyOptions()

Возвращает

Cake\ORM\Query

findAll() public

findAll(Cake\ORM\Query $query, array<string, mixed> $options): Cake\ORM\Query

Возвращает запрос, как он был передан.

По умолчанию findAll() не применяет никаких условий, вы можете переопределить этот метод в подклассах, чтобы изменить работу find('all').

Параметры

Cake\ORM\Query $query

Запрос для поиска

array<string, mixed> $options

Параметры поиска

Возвращает

Cake\ORM\Query

findAssociation() protected

findAssociation(string $name): Cake\ORM\Association|null

Возвращает объект ассоциации, настроенный для указанного псевдонима, если таковой имеется.

Аргумент name также поддерживает синтаксис точек для доступа к более глубоким ассоциациям.

$users = $this->getAssociation('Articles.Comments.Users');

Параметры

string $name

Псевдоним, используемый для ассоциации.

Возвращает

Cake\ORM\Association|null

findList() public

findList(Cake\ORM\Query $query, array<string, mixed> $options): Cake\ORM\Query

Настраивает объект запроса так, чтобы результаты отображались как индексированный массив, что полезно в тех случаях, когда вам нужен список, например, для заполнения выпадающих списков.

При вызове этого поиска переданные поля используются для определения того, что должно использоваться в качестве ключа массива, значения и, необязательно, группировки результатов. По умолчанию в качестве ключа используется первичный ключ модели, а в качестве значения — поле отображения.

Результаты этого поиска будут иметь следующий вид:

[
 1 => 'value for id 1',
 2 => 'value for id 2',
 4 => 'value for id 4'
]

Вы можете указать, какое свойство будет использоваться в качестве ключа, а какое в качестве значения, используя массив $options. Если не указано, он будет использовать результат вызова primaryKey и displayField соответственно в этой таблице:

$table->find('list', [
 'keyField' => 'name',
 'valueField' => 'age'
]);

valueField также может быть массивом, в этом случае вы также можете указать опцию valueSeparator, чтобы управлять тем, как значения будут конкатенироваться:

$table->find('list', [
 'valueField' => ['first_name', 'last_name'],
 'valueSeparator' => ' | ',
]);

Результаты этого поиска будут иметь следующий вид:

[
 1 => 'John | Doe',
 2 => 'Steve | Smith'
]

Результаты могут быть объединены в более крупные группы, если они разделяют свойство. Вы можете настроить свойство для группировки, установив groupField:

$table->find('list', [
 'groupField' => 'category_id',
]);

При использовании groupField результаты будут возвращены в таком формате:

[
 'group_1' => [
     1 => 'value for id 1',
     2 => 'value for id 2',
 ]
 'group_2' => [
     4 => 'value for id 4'
 ]
]

Параметры

Cake\ORM\Query $query

Запрос для поиска

array<string, mixed> $options

Параметры для поиска

Возвращает

Cake\ORM\Query

findOrCreate() public

findOrCreate(Cake\ORM\Query|callable|array $search, callable|null $callback = null, array<string, mixed> $options = []): Cake\Datasource\EntityInterface

Ищет существующую запись или создаёт новую.

Проводится поиск() для поиска существующей записи, используя атрибуты, определённые в $search. Если записи соответствуют условиям, возвращается первая запись.

Если запись не найдена, создаётся новая сущность с свойствами $search. Если предоставлен обратный вызов, он будет вызван, позволяя определить дополнительные значения по умолчанию. Новая сущность будет сохранена и возвращена.

Если условия поиска требуют настраиваемого порядка, ассоциаций или условий, то параметр $search может быть вызываемой функцией, которая принимает запрос в качестве аргумента, или объектом \Cake\ORM\Query, переданным в качестве параметра $search. Это позволяет настроить результаты поиска.

Параметры

Массив options передаётся методу save со следующими исключениями:

  • atomic: Выполнять ли методы find, save и обратные вызовы внутри транзакции базы данных (по умолчанию: true)
  • defaults: Использовать ли критерии поиска в качестве значений по умолчанию для новой сущности (по умолчанию: true)

Параметры

Cake\ORM\Query|callable|array $search

Критерии поиска существующих записей. Обратите внимание, что при передаче объекта запроса вам нужно будет использовать 2-й аргумент метода, чтобы изменить данные сущности перед сохранением.

callable|null $callback optional

Обратный вызов, который будет вызван для вновь созданных сущностей. Этот обратный вызов будет вызван *до* сохранения сущности.

array<string, mixed> $options optional

Параметры сохранения.

Возвращает

Cake\Datasource\EntityInterface

Выбрасывает

Cake\ORM\Exception\PersistenceFailedException
При невозможности сохранения сущности

findThreaded() public

findThreaded(Cake\ORM\Query $query, array<string, mixed> $options): Cake\ORM\Query

Результаты этого поиска будут вложенным массивом и подходят, если вы хотите использовать поле parent_id данных вашей модели для построения вложенных результатов.

Значения, относящиеся к родительской строке на основе их значения parent_id, будут рекурсивно вложены внутри значений родительской строки с использованием свойства children

Вы можете настроить, какие поля используются для вложения результатов. По умолчанию используются поля первичного ключа и parent_id. Если вы хотите изменить эти значения по умолчанию, вам необходимо указать ключи keyField, parentField или nestingKey в $options:

$table->find('threaded', [
 'keyField' => 'id',
 'parentField' => 'ancestor_id',
 'nestingKey' => 'children'
]);

Параметры

Cake\ORM\Query $query

Запрос для поиска

array<string, mixed> $options

Опции поиска

Возвращает

Cake\ORM\Query

get() public

get(mixed $primaryKey, array<string, mixed> $options = []): Cake\Datasource\EntityInterface

Возвращает одну запись после поиска по её первичному ключу. Если запись не найдена, этот метод выбрасывает исключение.

Использование

Получение статьи и некоторых отношений:

$article = $articles->get(1, ['contain' => ['Users', 'Comments']]);

Параметры

mixed $primaryKey

Значение первичного ключа для поиска

array<string, mixed> $options optional

Опции, принимаемые Table::find()

Возвращает

Cake\Datasource\EntityInterface

Выбрасывает

Cake\Datasource\Exception\RecordNotFoundException
Если запись с указанным идентификатором не найдена
Cake\Datasource\Exception\InvalidPrimaryKeyException
Если $primaryKey имеет неверное количество элементов.

См. также

\Cake\Datasource\RepositoryInterface::find()

getAlias() public

getAlias(): string

Возвращает псевдоним таблицы.

Возвращает

string

getAssociation() public

getAssociation(string $name): Cake\ORM\Association

Возвращает объект ассоциации, настроенный для указанного псевдонима.

Аргумент name также поддерживает синтаксис точек для доступа к более глубоким ассоциациям.

$users = $this->getAssociation('Articles.Comments.Users');

Обратите внимание, что этот метод требует наличия ассоциации, в противном случае он выбросит исключение. Если вы не уверены, используйте hasAssociation() перед вызовом этого метода.

Параметры

string $name

Псевдоним, используемый для ассоциации.

Возвращает

Cake\ORM\Association

Исключения

InvalidArgumentException

getBehavior() public

getBehavior(string $name): Cake\ORM\Behavior

Получить поведение из реестра.

Параметры

string $name

Псевдоним поведения, который нужно получить из реестра.

Возвращает

Cake\ORM\Behavior

Исключения

InvalidArgumentException
Если поведение не существует.

getConnection() public

getConnection(): Cake\Database\Connection

Возвращает экземпляр соединения.

Возвращает

Cake\Database\Connection

getDisplayField() public

getDisplayField(): array<string>|string|null

Возвращает поле отображения.

Возвращает

array<string>|string|null

getEntityClass() public

getEntityClass(): string

Возвращает класс, используемый для гидратации строк для этой таблицы.

Возвращает

string

getEventManager() public

getEventManager(): Cake\Event\EventManagerInterface

Возвращает экземпляр менеджера Cake\Event\EventManager для этого объекта.

Вы можете использовать этот экземпляр для регистрации любых новых слушателей или обратных вызовов для событий объекта, или создавать свои собственные события и вызывать их по своему усмотрению.

Возвращает

Cake\Event\EventManagerInterface

getPrimaryKey() public

getPrimaryKey(): array<string>|string

Возвращает имя поля первичного ключа.

Возвращает

array<string>|string

getRegistryAlias() public

getRegistryAlias(): string

Возвращает ключ реестра таблицы, используемый для создания этого экземпляра таблицы.

Возвращает

string

getSaveOptionsBuilder() public

getSaveOptionsBuilder(array<string, mixed> $options = []): Cake\ORM\SaveOptionsBuilder

Получает экземпляр SaveOptionsBuilder.

Параметры

array<string, mixed> $options optional

Параметры для анализа билдером.

Возвращает

Cake\ORM\SaveOptionsBuilder

getSchema() public

getSchema(): Cake\Database\Schema\TableSchemaInterface

Возвращает объект схемы таблицы, описывающий свойства этой таблицы.

Возвращает

Cake\Database\Schema\TableSchemaInterface

getTable() public

getTable(): string

Возвращает имя таблицы базы данных.

Это может включать имя схемы базы данных, если оно задано с использованием setTable().

Возвращает

string

getValidator() public

getValidator(string|null $name = null): Cake\Validation\Validator

Возвращает правила проверки, помеченные с помощью $name. Возможно иметь несколько различных наборов проверки с именами, что полезно, когда вам нужно использовать различные правила при сохранении из разных процедур вашей системы.

Если ранее валидатор не был задан, этот метод создаст валидатор, используя метод внутри вашего класса.

Например, если вы хотите создать набор проверки под названием 'forSubscription', вам нужно создать метод в вашем подклассе Table следующим образом:

public function validationForSubscription($validator)
{
    return $validator
        ->add('email', 'valid-email', ['rule' => 'email'])
        ->add('password', 'valid', ['rule' => 'notBlank'])
        ->requirePresence('username');
}

$validator = $this->getValidator('forSubscription');

Вы можете реализовать метод в validationDefault в вашем подклассе Table, если хотите иметь набор проверки, который применяется в тех случаях, когда не указан другой набор.

Если аргумент $name не указан, будет возвращён валидатор по умолчанию. Вы можете настроить имя валидатора по умолчанию в DEFAULT_VALIDATOR константе класса.

Параметры

string|null $name optional

Имя набора проверки, который нужно вернуть.

Возвращает

Cake\Validation\Validator

hasAssociation() public

hasAssociation(string $name): bool

Проверяет, существует ли определённая ассоциация в этом экземпляре Table.

Аргумент name также поддерживает синтаксис точек для доступа к более глубоким ассоциациям.

$hasUsers = $this->hasAssociation('Articles.Comments.Users');

Параметры

string $name

Псевдоним, используемый для ассоциации.

Возвращает

bool

hasBehavior() public

hasBehavior(string $name): bool

Проверяет, загружено ли поведение с данным псевдонимом.

Параметры

string $name

Псевдоним поведения для проверки.

Возвращает

bool

hasField() public

hasField(string $field): bool

Проверка наличия определённого поля/колонки в таблице.

Делегирует запрос к объекту схемы и проверяет наличие колонки, используя экземпляр Schema\Table.

Параметры

string $field

Поле для проверки.

Возвращает

bool

hasFinder() public

hasFinder(string $type): bool

Возвращает true, если поиск существует для таблицы

Параметры

string $type

имя поиска для проверки

Возвращает

bool

hasMany() public

hasMany(string $associated, array<string, mixed> $options = []): Cake\ORM\Association\HasMany

Создаёт новую ассоциацию HasMany между этой таблицей и целевой таблицей. Ассоциация "has many" - это отношение 1-N.

Целевая таблица может быть определена по её имени, которое указано в первом аргументе, или вы можете передать имя класса для создания или экземпляр класса непосредственно.

Массив options принимает следующие ключи:

  • className: Имя класса объекта целевой таблицы
  • targetTable: Экземпляр объекта таблицы, используемый в качестве целевой таблицы
  • foreignKey: Имя поля для использования в качестве внешнего ключа, если false, не будет использоваться
  • dependent: Установите в значение true, если вы хотите, чтобы CakePHP каскадно удалял связанные данные в целевой таблице, когда сущность удаляется в этой таблице. Операция удаления в связанной таблице не будет каскадно удалять дальше. Чтобы получить рекурсивные каскадные удаления, включите cascadeCallbacks также. Установите в значение false, если вы не хотите, чтобы CakePHP удалял связанные данные, или когда вы используете ограничения базы данных.
  • cascadeCallbacks: Установите в значение true, если вы хотите, чтобы CakePHP вызывал обратные вызовы при каскадном удалении. Если false, ORM будет использовать deleteAll() для удаления данных. При значении true записи будут загружены, а затем удалены.
  • conditions: массив с списком условий для фильтрации соединения
  • sort: Порядок, в котором должны возвращаться результаты для этой ассоциации
  • saveStrategy: Либо 'append', либо 'replace'. При 'append' текущие записи добавляются к любым записям в базе данных. При 'replace' связанные записи, не включённые в текущий набор, будут удалены. Если внешний ключ является полем, допускающим значения null, или если dependent имеет значение true, записи будут сиротами.
  • strategy: Стратегия, используемая для выбора результатов. Либо 'select', либо 'subquery'. Если выбран subquery, запрос, используемый для возвращения результатов в исходной таблице, будет использоваться в качестве условий для получения строк в целевой таблице.
  • finder: Метод поиска, который нужно использовать при загрузке записей из этой ассоциации. По умолчанию 'all'.

Этот метод вернёт объект ассоциации, который был создан.

Параметры

string $associated

Псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации

array<string, mixed> $options optional

Список параметров для настройки определения ассоциации

Возвращает

Cake\ORM\Association\HasMany

hasOne() public

hasOne(string $associated, array<string, mixed> $options = []): Cake\ORM\Association\HasOne

Создаёт новую ассоциацию 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.

Этот метод вернёт объект ассоциации, который был создан.

Параметры

string $associated

псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации

array<string, mixed> $options optional

список опций для настройки определения ассоциации

Возвращаемое значение

Cake\ORM\Association\HasOne

hasValidator() public

hasValidator(string $name): bool

Проверяет, установлен ли валидатор.

Параметры

string $name

Имя валидатора.

Возвращаемое значение

bool

implementedEvents() public

implementedEvents(): array<string, mixed>

Получает обратные вызовы модели, к которым заинтересована данная таблица.

Реализуя стандартные методы, предполагается, что класс таблицы заинтересован в соответствующем событии.

Переопределите этот метод, если вам нужно добавить обработчики событий, не относящиеся к стандарту. Или если вы хотите, чтобы ваша таблица прослушивала нестандартные события.

Стандартная карта методов:

  • Model.beforeMarshal => beforeMarshal
  • Model.afterMarshal => afterMarshal
  • Model.buildValidator => buildValidator
  • Model.beforeFind => beforeFind
  • Model.beforeSave => beforeSave
  • Model.afterSave => afterSave
  • Model.afterSaveCommit => afterSaveCommit
  • Model.beforeDelete => beforeDelete
  • Model.afterDelete => afterDelete
  • Model.afterDeleteCommit => afterDeleteCommit
  • Model.beforeRules => beforeRules
  • Model.afterRules => afterRules

Возвращаемое значение

array<string, mixed>

initialize() public

initialize(array<string, mixed> $config): void

Инициализирует экземпляр таблицы. Вызывается после конструктора.

Вы можете использовать этот метод для определения ассоциаций, добавления бихевиоров, определения валидации и выполнения других необходимых операций инициализации.

public function initialize(array $config)
 {
     $this->belongsTo('Users');
     $this->belongsToMany('Tagging.Tags');
     $this->setPrimaryKey('something_else');
 }

Параметры

array<string, mixed> $config

Параметры конфигурации, переданные в конструктор

Возвращаемое значение

void

loadInto() public

loadInto(Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface> $entities, array $contain): Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>

Загружает указанные ассоциации в переданный объект или список объектов, выполняя дополнительные запросы в базе данных и объединяя результаты в соответствующие свойства.

Пример:

$user = $usersTable->get(1);
$user = $usersTable->loadInto($user, ['Articles.Tags', 'Articles.Comments']);
echo $user->articles[0]->title;

Вы также можете загрузить ассоциации для нескольких объектов одновременно

Пример:

$users = $usersTable->find()->where([...])->toList();
$users = $usersTable->loadInto($users, ['Articles.Tags', 'Articles.Comments']);
echo $user[1]->articles[0]->title;

Свойства ассоциаций, которые будут загружены, перезапишутся для каждого объекта.

Параметры

Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface> $entities

один объект или список объектов

array $contain

Массив, совместимый с contain().

Возвращаемое значение

Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>

См. также

\Cake\ORM\Query::contain()

marshaller() public

marshaller(): Cake\ORM\Marshaller

Получить объект, используемый для маршаллирования/преобразования данных массива в объекты.

Переопределите этот метод, если вы хотите, чтобы объект таблицы использовал пользовательскую логику маршаллирования.

Возвращаемое значение

Cake\ORM\Marshaller

См. также

\Cake\ORM\Marshaller

newEmptyEntity() public

newEmptyEntity(): Cake\Datasource\EntityInterface

Создаёт новый объект сущности.

Внимание: Это не вызывает никакой проверки полей. Эта сущность может быть сохранена без ошибок валидации как пустая запись. Всегда заполняйте необходимые поля перед сохранением.

Возвращаемое значение

Cake\Datasource\EntityInterface

newEntities() public

newEntities(array $data, array<string, mixed> $options = []): arrayCake\Datasource\EntityInterface>

Создаёт список объектов + связанных объектов из массива.

По умолчанию все ассоциации в этой таблице будут гидратированы. Вы можете ограничить создаваемые ассоциации или включить более глубокие ассоциации, используя параметр options:

$articles = $this->Articles->newEntities(
  $this->request->getData(),
  ['associated' => ['Tags', 'Comments.Users']]
);

Вы можете ограничить поля, присутствующие в созданных объектах, передав параметр fields, который также принимается для ассоциаций:

$articles = $this->Articles->newEntities($this->request->getData(), [
 'fields' => ['title', 'body', 'tags', 'comments'],
 'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']]
 ]
);

Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием в объекты.

Параметры

array $data

Данные для создания объекта.

array<string, mixed> $options optional

Список параметров для гидратации объектов.

Возвращаемое значение

arrayCake\Datasource\EntityInterface>

newEntity() public

newEntity(array $data, array<string, mixed> $options = []): Cake\Datasource\EntityInterface

Создаёт новый объект + связанные объекты из массива.

По умолчанию все ассоциации в этой таблице будут гидратированы. Вы можете ограничить создаваемые ассоциации или включить более глубокие ассоциации, используя параметр options:

$article = $this->Articles->newEntity(
  $this->request->getData(),
  ['associated' => ['Tags', 'Comments.Users']]
);

Вы можете ограничить поля, присутствующие в созданном объекте, передав параметр fields, который также принимается для ассоциаций:

$article = $this->Articles->newEntity($this->request->getData(), [
 'fields' => ['title', 'body', 'tags', 'comments'],
 'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']]
]
);

Параметр fields позволяет удалить или ограничить данные входных данных, которые попадают в объект. Если вы хотите ослабить доступные поля объекта по умолчанию, вы можете использовать параметр accessibleFields:

$article = $this->Articles->newEntity(
  $this->request->getData(),
  ['accessibleFields' => ['protected_field' => true]]
);

По умолчанию данные валидируются перед передачей новому объекту. В случае некорректных полей они не будут присутствовать в результирующем объекте. Параметр validate может быть использован для отключения валидации на переданных данных:

$article = $this->Articles->newEntity(
  $this->request->getData(),
  ['validate' => false]
);

Вы также можете передать имя валидатора для использования в параметре validate. Если null передаётся в первый параметр этой функции, никакая валидация не будет выполнена.

Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием в объекты.

Параметры

array $data

Данные для создания объекта.

array<string, mixed> $options optional

Список параметров для гидратации объекта.

Возвращаемое значение

Cake\Datasource\EntityInterface

См. также

\Cake\ORM\Marshaller::one()

patchEntities() public

patchEntities(Traversable|arrayCake\Datasource\EntityInterface> $entities, array $data, array<string, mixed> $options = []): arrayCake\Datasource\EntityInterface>

Объединяет каждый из элементов, переданных в $data, в объекты, найденные в $entities, учитывая доступные поля, настроенные для объектов. Объединение выполняется путём сопоставления первичного ключа в каждом элементе в $data и $entities.

Записи в $entities, которые не могут быть сопоставлены с какой-либо записью в $data, будут отброшены. Записи в $data, которые не смогли быть сопоставлены, будут маршаллированы как новые объекты.

При объединении ассоциаций HasMany или BelongsToMany все объекты в массиве $data будут отображаться, те, которые могут быть сопоставлены по первичному ключу, получат данные, объединённые, но те, которые не могут, будут отброшены.

Вы можете ограничить поля, которые будут присутствовать в объединённых объектах, передав параметр fields, который также принимается для ассоциаций:

$articles = $this->Articles->patchEntities($articles, $this->request->getData(), [
 'fields' => ['title', 'body', 'tags', 'comments'],
 'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']]
 ]
);

Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед преобразованием в объекты.

Параметры

Traversable|arrayCake\Datasource\EntityInterface> $entities

объекты, которым будут объединены данные

array $data

список массивов для объединения в объекты

array<string, mixed> $options optional

Список параметров для гидратации объектов.

Возвращаемое значение

arrayCake\Datasource\EntityInterface>

patchEntity() public

patchEntity(Cake\Datasource\EntityInterface $entity, array $data, array<string, mixed> $options = []): Cake\Datasource\EntityInterface

Объединяет переданные $data в $entity, учитывая доступные поля, настроенные для сущности. Возвращает ту же сущность после изменения.

При объединении ассоциаций HasMany или BelongsToMany все сущности в массиве $data появятся, те, которые могут быть сопоставлены по первичному ключу, получат объединённые данные, а те, которые нет – будут отброшены.

Вы можете ограничить поля, которые будут присутствовать в объединённой сущности, передав опцию fields, которая также поддерживается для ассоциаций:

$article = $this->Articles->patchEntity($article, $this->request->getData(), [
 'fields' => ['title', 'body', 'tags', 'comments'],
 'associated' => ['Tags', 'Comments.Users' => ['fields' => 'username']]
 ]
);
$article = $this->Articles->patchEntity($article, $this->request->getData(), [
  'associated' => [
    'Tags' => ['accessibleFields' => ['*' => true]]
  ]
]);

По умолчанию данные проверяются перед передачей в сущность. В случае невалидных полей они не будут назначены сущности. Опцию validate можно использовать для отключения проверки переданных данных:

$article = $this->patchEntity($article, $this->request->getData(),[
 'validate' => false
]);

Вы можете использовать событие Model.beforeMarshal для изменения данных запроса перед их преобразованием в сущности.

При обновлении скалярных значений (null/boolean/string/integer/float), если свойство в настоящее время имеет идентичное значение, вызыватель не будет вызван, и свойство не будет помечено как изменённое. Это оптимизация, предотвращающая ненужное обновление полей при сохранении сущностей.

Параметры

Cake\Datasource\EntityInterface $entity

сущность, в которую будут объединены данные

array $data

список пар ключ-значение полей, которые будут объединены в сущность

array<string, mixed> $options необязательно

Список опций для гидрации объекта.

Возвращает

Cake\Datasource\EntityInterface

См. также

\Cake\ORM\Marshaller::merge()

query() public

query(): Cake\ORM\Query

Создаёт новый экземпляр Query для таблицы.

Возвращает

Cake\ORM\Query

removeBehavior() public

removeBehavior(string $name): $this

Удаляет поведение из реестра поведения этой таблицы.

Пример:

Удаление поведения из этой таблицы.

$this->removeBehavior('Tree');

Параметры

string $name

Псевдоним, с которым было добавлено поведение.

Возвращает

$this

См. также

\Cake\ORM\Behavior

rulesChecker() public

rulesChecker(): Cake\Datasource\RulesChecker

Возвращает RulesChecker для этого экземпляра.

Объект RulesChecker используется для проверки сущности на соответствие правилам, которые могут включать сложную логику или данные, которые необходимо извлечь из соответствующих источников данных.

Возвращает

Cake\Datasource\RulesChecker

См. также

\Cake\Datasource\RulesChecker

save() public

save(Cake\Datasource\EntityInterface $entity, ArrayAccess|array $options = []): Cake\Datasource\EntityInterface|false

Сохраняет сущность на основе помеченных как изменённые полей и возвращает ту же сущность после успешного сохранения или 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|array $options необязательно

Опции, которые нужно использовать при сохранении.

Возвращает

Cake\Datasource\EntityInterface|false

Исключения

Cake\ORM\Exception\RolledbackTransactionException
Если транзакция прервана в событии afterSave.

saveMany() public

saveMany(Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface> $entities, Cake\ORM\SaveOptionsBuilderArrayAccess|array $options = []): Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface>|false

Сохраняет несколько сущностей таблицы.

Записи будут сохранены в транзакции, которая будет откатана, если какая-либо запись не будет сохранена из-за неудачной проверки или ошибки базы данных.

Параметры

Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface> $entities

Сущности для сохранения.

Cake\ORM\SaveOptionsBuilderArrayAccess|array $options необязательно

Опции, используемые при вызове Table::save() для каждой сущности.

Возвращает

Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface>|false

Исключения

Exception

saveManyOrFail() public

saveManyOrFail(Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface> $entities, ArrayAccess|array $options = []): Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface>

Сохраняет несколько сущностей таблицы.

Записи будут сохранены в транзакции, которая будет откатана, если какая-либо запись не будет сохранена из-за неудачной проверки или ошибки базы данных.

Параметры

Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface> $entities

Сущности для сохранения.

ArrayAccess|array $options необязательно

Опции, используемые при вызове Table::save() для каждой сущности.

Возвращает

Cake\Datasource\ResultSetInterface|arrayCake\Datasource\EntityInterface>

Исключения

Exception

Cake\ORM\Exception\PersistenceFailedException
Если сущность не могла быть сохранена.

saveOrFail() public

saveOrFail(Cake\Datasource\EntityInterface $entity, ArrayAccess|array $options = []): Cake\Datasource\EntityInterface

Попробуйте сохранить сущность или выбросить PersistenceFailedException, если проверки прикладных правил завершились неудачей, сущность содержит ошибки или сохранение было прервано обратным вызовом.

Параметры

Cake\Datasource\EntityInterface $entity

сущность, которая будет сохранена

ArrayAccess|array $options необязательно

Опции, которые нужно использовать при сохранении.

Возвращает

Cake\Datasource\EntityInterface

Исключения

Cake\ORM\Exception\PersistenceFailedException
При невозможности сохранения сущности

См. также

\Cake\ORM\Table::save()

setAlias() public

setAlias(string $alias): $this

Устанавливает псевдоним таблицы.

Параметры

string $alias

Псевдоним таблицы

Возвращает

$this

setConnection() public

setConnection(Cake\Database\Connection $connection): $this

Устанавливает экземпляр соединения.

Параметры

Cake\Database\Connection $connection

Экземпляр соединения

Возвращает

$this

setDisplayField() public

setDisplayField(array<string>|string $field): $this

Устанавливает поле отображения.

Параметры

array<string>|string $field

Имя, используемое в качестве поля отображения.

Возвращает

$this

setEntityClass() public

setEntityClass(string $name): $this

Устанавливает класс, используемый для гидрации строк для этой таблицы.

Параметры

string $name

Имя используемого класса.

Возвращает

$this

Исключения

Cake\ORM\Exception\MissingEntityException
при невозможности найти класс сущности

setEventManager() public

setEventManager(Cake\Event\EventManagerInterface $eventManager): $this

Возвращает экземпляр Cake\Event\EventManagerInterface для этого объекта.

Вы можете использовать этот экземпляр для регистрации новых обработчиков или обратных вызовов для событий объекта, или создавать свои собственные события и вызывать их по желанию.

Параметры

Cake\Event\EventManagerInterface $eventManager

устанавливаемый менеджер событий

Возвращает

$this

setPrimaryKey() public

setPrimaryKey(array<string>|string $key): $this

Устанавливает имя первичного ключа.

Параметры

array<string>|string $key

Устанавливает новое имя, используемое в качестве первичного ключа

Возвращает

$this

setRegistryAlias() public

setRegistryAlias(string $registryAlias): $this

Устанавливает ключ реестра таблиц, используемый для создания экземпляра этой таблицы.

Параметры

string $registryAlias

Ключ для доступа к этому объекту.

Возвращает

$this

setSchema() public

setSchema(Cake\Database\Schema\TableSchemaInterface|array $schema): $this

Устанавливает объект схемы таблицы, описывающий свойства этой таблицы.

Если передан массив, из него будет создан новый объект TableSchemaInterface, который будет использоваться в качестве схемы для этой таблицы.

Параметры

Cake\Database\Schema\TableSchemaInterface|array $schema

Схема, используемая для этой таблицы

Возвращает

$this

setTable() public

setTable(string $table): $this

Устанавливает имя таблицы базы данных.

Это может включать имя схемы базы данных в формате 'схема.таблица'. Если имя необходимо заключить в кавычки, включите автоматическое заключение идентификаторов в кавычки.

Параметры

string $table

Имя таблицы.

Возвращает

$this

setValidator() public

setValidator(string $name, Cake\Validation\Validator $validator): $this

Этот метод сохраняет пользовательский валидатор под данным именем.

Вы можете самостоятельно создать объект и сохранить его в своем объекте:

$validator = new \Cake\Validation\Validator();
$validator
    ->add('email', 'valid-email', ['rule' => 'email'])
    ->add('password', 'valid', ['rule' => 'notBlank'])
    ->allowEmpty('bio');
$this->setValidator('forSubscription', $validator);

Параметры

string $name

Имя настраиваемого валидатора.

Cake\Validation\Validator $validator

Объект валидатора, который нужно установить.

Возвращает

$this

subquery() public

subquery(): Cake\ORM\Query

Создаёт новый экземпляр Query::subquery() для таблицы.

Возвращает

Cake\ORM\Query

См. также

\Cake\ORM\Query::subquery()

updateAll() public

updateAll(Cake\Database\Expression\QueryExpressionClosure|array|string $fields, mixed $conditions): int

Обновляет все соответствующие записи.

Устанавливает $fields в предоставленные значения на основе $conditions. Этот метод не вызывает события beforeSave/afterSave. Если вам нужны эти события, сначала загрузите коллекцию записей и обновите их.

Параметры

Cake\Database\Expression\QueryExpressionClosure|array|string $fields
mixed $conditions

Возвращает

int

validateUnique() public

validateUnique(mixed $value, array<string, mixed> $options, array|null $context = null): bool

Метод валидации, используемый для проверки уникальности значения для столбца. Он предназначен для использования с API валидации, а не для прямого вызова.

Пример:

$validator->add('email', [
 'unique' => ['rule' => 'validateUnique', 'provider' => 'table']
])

Валидация уникальности может быть ограничена значением другого столбца:

$validator->add('email', [
 'unique' => [
     'rule' => ['validateUnique', ['scope' => 'site_id']],
     'provider' => 'table'
 ]
]);

В приведенном выше примере уникальность электронной почты будет ограничена только строками, имеющими одинаковый site_id. Ограничение будет использоваться только в том случае, если поле ограничения присутствует в данных, подлежащих валидации.

Параметры

mixed $value

Значение столбца, уникальность которого нужно проверить.

array<string, mixed> $options

Массив опций, необязательно содержащий ключ 'scope'. Также может быть контекстом валидации, если нет опций.

array|null $context optional

Либо контекст валидации, либо null.

Возвращает

bool

validationDefault() public

validationDefault(Cake\Validation\Validator $validator): Cake\Validation\Validator

Возвращает объект валидатора по умолчанию. Подклассы могут переопределять эту функцию, чтобы добавить набор правил валидации по умолчанию к объекту валидатора.

Параметры

Cake\Validation\Validator $validator

Валидатор, который можно изменить, чтобы добавить к нему правила.

Возвращает

Cake\Validation\Validator

validationMethodExists() protected

validationMethodExists(string $name): bool

Проверяет наличие метода валидации.

Параметры

string $name

Возвращает

bool

Подробное описание свойств

$_alias protected

Человеческое имя, присвоенное этому экземпляру. Несколько объектов, представляющих одну и ту же таблицу базы данных, могут существовать с использованием разных псевдонимов.

Тип

string|null

$_associations protected

Контейнер ассоциаций для этой таблицы.

Тип

Cake\ORM\AssociationCollection

$_behaviors protected

BehaviorRegistry для этой таблицы

Тип

Cake\ORM\BehaviorRegistry

$_connection protected

Экземпляр подключения

Тип

Cake\Database\Connection|null

$_displayField protected

Имя поля, представляющего удобочитаемое представление строки

Тип

array<string>|string|null

$_entityClass protected

Имя класса, представляющего одну строку для этой таблицы

Тип

string

$_eventClass protected

Имя класса по умолчанию для новых объектов событий.

Тип

string

$_eventManager protected

Экземпляр Cake\Event\EventManager, используемый этим объектом для отправки внутренних событий.

Тип

Cake\Event\EventManagerInterface|null

$_primaryKey protected

Имя поля, представляющего первичный ключ в таблице

Тип

array<string>|string|null

$_registryAlias protected

Ключ реестра, используемый для создания этого объекта таблицы

Тип

string|null

$_rulesChecker protected

Правила домена, применяемые к сущностям, сохраненным в этой таблице

Тип

Cake\Datasource\RulesChecker

$_schema protected

Объект схемы, содержащий описание полей этой таблицы

Тип

Cake\Database\Schema\TableSchemaInterface|null

$_table protected

Имя таблицы, как оно указано в базе данных

Тип

string|null

$_validatorClass protected

Класс валидатора.

Тип

string

$_validators protected

Список объектов валидации, индексированных по имени

Тип

arrayCake\Validation\Validator>

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.3/class-Cake.ORM.Table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API