Spec-Zone.ru › CakePHP 3.3

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

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

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

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

Основной способ извлечения данных — использование 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\ORM
См.: \Cake\Event\EventManager для справки по системе событий.
Расположение: ORM/Table.php

Резюме констант

  • string

    DEFAULT_VALIDATOR
    'default'
  • string

    RULES_CLASS
    'Cake\ORM\RulesChecker'
  • string

    VALIDATOR_PROVIDER_NAME
    'table'

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

  • $_alias protected
    string

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

  • $_associations protected
    Cake\ORM\AssociationCollection
    Контейнер ассоциаций для этой таблицы.
  • $_behaviors protected
    Cake\ORM\BehaviorRegistry
    BehaviorRegistry для этой таблицы
  • $_connection protected
    Cake\Datasource\ConnectionInterface
    Экземпляр соединения
  • $_displayField protected
    string
    Название поля, представляющего удобочитаемую строку строки
  • $_entityClass protected
    string
    Название класса, представляющего одну строку для этой таблицы
  • $_primaryKey protected
    string|array
    Название поля, представляющего первичный ключ в таблице
  • $_registryAlias protected
    string
    Ключ реестра, используемый для создания объекта таблицы
  • $_schema protected
    Cake\Database\Schema\Table
    Объект схемы, содержащий описание полей этой таблицы
  • $_table protected
    string
    Название таблицы, как оно указано в базе данных

Унаследованные свойства

  • _eventClass, _eventManager _rulesChecker _validatorClass, _validators

Резюме методов

  • __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
    Возвращает экземпляр подключения или устанавливает новый
  • defaultConnectionName() public static
    Получить имя подключения по умолчанию.
  • 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\Behavior

alias()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\BelongsTo

belongsToMany()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\BelongsToMany

buildRules()source public

buildRules( Cake\ORM\RulesChecker $rules )

Параметры

Cake\ORM\RulesChecker $rules
Объект правил, который необходимо изменить.

Возвращает

Cake\ORM\RulesChecker

callFinder()source public

callFinder( string $type , Cake\ORM\Query $query , array $options [] )

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

Параметры

string $type
имя вызываемого метода поиска
Cake\ORM\Query $query
Объект запроса, к которому нужно применить опции поиска
array $options необязательно []
Список опций, которые необходимо передать методу поиска

Возвращает

Cake\ORM\Query

Исключения

BadMethodCallException

connection()source public

connection( Cake\Datasource\ConnectionInterface $conn null )

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

Параметры

Cake\Datasource\ConnectionInterface $conn необязательно null
Новый экземпляр соединения

Возвращает

Cake\Datasource\ConnectionInterface

defaultConnectionName()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
устанавливает новое имя, используемое в качестве поля отображения

Возвращает

string

entityClass()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\SaveOptionsBuilder

hasBehavior()source public

hasBehavior( string $name )

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

Параметры

строка $name
Псевдоним бихевиора для проверки.

Возвращает

boolean
Существует ли бихевиор.

hasField()source public

hasField( string $field )

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

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

Параметры

строка $field
Поле для проверки.

Возвращает

boolean
True, если поле существует, false — если нет.

Реализация

Cake\Datasource\RepositoryInterface::hasField()

hasFinder()source public

hasFinder( string $type )

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

Параметры

строка $type
Имя искомого поиска

Возвращает

boolean

hasMany()source public

hasMany( string $associated , array $options [] )

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

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

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

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

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

Параметры

строка $associated

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

массив $options необязательно []
Список параметров для настройки определения ассоциации

Возвращает

Cake\ORM\Association\HasMany

hasOne()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 $options optional []
список параметров для настройки определения ассоциации

Возвращает

Cake\ORM\Association\HasOne

implementedEvents()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\Marshaller

newEntities()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 $options optional []
Список параметров для гидратации объектов.

Возвращает

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 $data optional null
Данные для создания объекта.
array $options optional []
Список параметров для гидратации объектов.

Возвращает

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 $options optional []
список параметров для гидратации объектов

Возвращает

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\Behavior

save()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\ResultSet
False при ошибке, список сущностей при успехе.

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\Table

table()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 $context optional null
Контекст валидации или null.

Возвращает

boolean
True, если значение уникально, или false, если было задано нескалярное, не уникальное значение.

Методы, используемые из Cake\Event\EventDispatcherTrait

dispatchEvent()source public

dispatchEvent( string $name , array|null $data null , object|null $subject null )

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

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

Параметры

string $name
Имя события.
array|null $data optional null

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

object|null $subject optional null

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

Возвращает

Cake\Event\Event

eventManager()source public

eventManager( Cake\Event\EventManager $eventManager null )

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

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

Параметры

Cake\Event\EventManager $eventManager optional 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 $operation optional RulesChecker::CREATE
Выполняемая операция. Либо 'create', 'update' или 'delete'.
ArrayObject|array|null $options optional null
Опции, которые необходимо передать правилам.

Возвращает

boolean

rulesChecker()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\Validator

validator()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 $name optional null
имя набора валидации, который нужно вернуть
Cake\Validation\Validator $validator optional null

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

Возвращает

Cake\Validation\Validator

Выбрасывает

RuntimeException

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

$_aliassource

protected string

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

$_associationssource

protected Cake\ORM\AssociationCollection

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

$_behaviorssource

protected Cake\ORM\BehaviorRegistry

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

$_connectionsource

protected Cake\Datasource\ConnectionInterface

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

$_displayFieldsource

protected string

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

$_entityClasssource

protected string

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

$_primaryKeysource

protected string|array

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

$_registryAliassource

protected string

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

$_schemasource

protected Cake\Database\Schema\Table

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

$_tablesource

protected string

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

© 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

Spec-Zone.ru

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