Spec-Zone.ru › CakePHP 3.2

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

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

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

Получение данных

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

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

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

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

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

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

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

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

Обработчики событий

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

  • beforeFind(Event $event, Query $query, ArrayObject $options, boolean $primary) Срабатывает перед каждой операцией поиска. Остановив событие и предоставив значение возврата, вы можете полностью пропустить операцию поиска. Любые изменения, внесённые в экземпляр $query, сохранятся для последующего поиска. Параметр $primary указывает, является ли это корневым запросом или ассоциированным запросом.

  • buildValidator(Event $event, Validator $validator, string $name) Позволяет слушателям изменять правила валидации для указанного валидатора.

  • buildRules(Event $event, RulesChecker $rules) Позволяет слушателям изменять проверяющий правила, добавляя новые правила.

  • beforeRules(Event $event, EntityInterface $entity, ArrayObject $options, string $operation) Срабатывает перед проверкой сущности с помощью проверяющего правила. Остановив это событие, вы можете вернуть окончательное значение операции проверки правил.

  • afterRules(Event $event, EntityInterface $entity, ArrayObject $options, bool $result, string $operation) Срабатывает после проверки правил для сущности. Остановив это событие, вы можете вернуть окончательное значение операции проверки правил.

  • beforeSave(Event $event, EntityInterface $entity, ArrayObject $options) Срабатывает перед сохранением каждой сущности. Остановка этого события приведёт к прерыванию операции сохранения. При остановке события результатом события будет возвращённое значение.

  • afterSave(Event $event, EntityInterface $entity, ArrayObject $options) Срабатывает после сохранения сущности.

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

  • beforeDelete(Event $event, EntityInterface $entity, ArrayObject $options) Срабатывает перед удалением сущности. Остановив это событие, вы прервёте операцию удаления.

  • afterDelete(Event $event, EntityInterface $entity, ArrayObject $options) Срабатывает после удаления сущности.

Cake\ORM\Table реализует Cake\Datasource\RepositoryInterface, Cake\Event\EventListenerInterface, Cake\Event\EventDispatcherInterface использует Cake\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
    Регистр поведения для этой таблицы
  • $_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.
  • _initializeSchema() protected

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

  • _insert() protected
    Вспомогательная функция для обработки вставки данных сущности в таблицу
  • _newId() protected
    Генерирует значение первичного ключа для новой записи.
  • _onSaveSuccess() protected

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

  • _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

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

  • 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
    Создаёт новый экземпляр запроса для этого репозитория.
  • 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: BehaviourRegistry. Обычно не используется за пределами тестов.
  • associations: Экземпляр AssociationCollection.
  • validator: Экземпляр Validator, который назначается в качестве набора валидации "default", или ассоциативный массив, где ключ - имя набора валидации, а значение - экземпляр Validator.

Параметры

массив $config по желанию []
Список опций для этой таблицы

__debugInfo()source public

__debugInfo( )

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

Возвращает

массив

__get()source public

__get( string $property )

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

Параметры

строка $property
имя ассоциации

Возвращает

Cake\ORM\Association

Исключения

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

__isset()source public

__isset( string $property )

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

Параметры

строка $property
имя ассоциации

Возвращает

логическое значение

_dynamicFinder()source protected

_dynamicFinder( string $method , array $args )

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

Параметры

строка $method
Имя метода, который был вызван.
массив $args
Список аргументов, передаваемых в функцию.

Возвращает

смешанный тип

Исключения

BadMethodCallException

при отсутствии аргументов или когда используются операторы & или or.


_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
изменённую схему

Api

_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 )

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

Параметры

Cake\Datasource\EntityInterface $entity
сущность, подлежащая сохранению
ArrayObject $options
опции для операции сохранения

Возвращает

логическое значение
Истина при успехе

Исключения

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
Сущность.
END_OF_DOCUMENT_MARKER

_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

Если транзакция прервана в событии после сохранения.


_setFieldMatchers()source protected

_setFieldMatchers( array $options , array $keys )

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

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

Параметры

array $options
исходные параметры, переданные в поиск
array $keys

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

Возвращает

array

_update()source protected

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

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

Параметры

Cake\Datasource\EntityInterface $entity
сущность-предмет, из которой были извлечены $data
array $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']
]);

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

Параметры

array $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().

Параметры

string $name
Название поведения. Может быть коротким именем класса.
array $options необязательно []
Параметры для использования поведения.

Выбрасывает

RuntimeException
Если поведение перезагружается.

См. также

Cake\ORM\Behavior

alias()source public

alias( string|null $alias null )

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

Параметры

string|null $alias необязательно null
новый псевдоним таблицы

Возвращает

string

Реализация

Cake\Datasource\RepositoryInterface::alias()

aliasField()source public

aliasField( string $field )

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

Параметры

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

Возвращает

string
Префикс поля с псевдонимом таблицы.

association()source public

association( string $name )

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

Параметры

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

Возвращает

Cake\ORM\Association|null
Ассоциация или null.

associations()source public

associations( )

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

Возвращает

Cake\ORM\AssociationCollection
Коллекция объектов ассоциаций.

behaviors()source public

behaviors( )

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

Возвращает

Cake\ORM\BehaviorRegistry
Экземпляр BehaviorRegistry.

belongsTo()source public

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

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

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

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

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

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

Параметры

string $associated

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

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

Возвращает

Cake\ORM\Association\BelongsTo

belongsToMany()source public

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

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

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

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

  • 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'.

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

Параметры

строка $associated

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

массив $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 [] )

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

Параметры

строка $type
имя вызываемого метода поиска
Cake\ORM\Query $query
Объект запроса, к которому нужно применить параметры поиска
массив $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 без указания подключения.

Возвращает

строка

См. также

\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
Сущность для удаления.
массив|ArrayAccess $options необязательно []
Параметры для удаления.

Возвращает

boolean
успех

Реализация

Cake\Datasource\RepositoryInterface::delete()

deleteAll()source public

deleteAll( mixed $conditions )

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

Параметры

смешанный $conditions

Условия, используемые в запросе; принимает всё, что может обработать Query::where().

Возвращает

целое число
Число затронутых строк.

Реализация

Cake\Datasource\RepositoryInterface::deleteAll()

displayField()source public

displayField( string|null $key null )

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

Параметры

строка|null $key необязательно null
устанавливает новое имя для поля отображения

Возвращает

строка

entityClass()source public

entityClass( string|null $name null )

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

Параметры

строка|null $name необязательно null
имя используемого класса

Возвращает

строка

Исключения

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

exists()source public

exists( array|ArrayAccess $conditions )

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

Параметры

массив|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

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

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

$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.

Параметры

строка $type необязательно 'all'
тип запроса для выполнения
массив|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|callable|Cake\ORM\Query $search , callable $callback null , array $options [] )

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

С помощью find() будет найдена существующая запись, используя атрибуты, определенные в $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 в $options.

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

Параметры

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()

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 между этой таблицей и целевой таблицей. Ассоциация «имеет много» представляет собой отношение 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'],
 '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'],
 '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'],
 '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'],
 '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 сохраняет связанные сущности 1-го уровня, как они находятся в переданном $entity, всякий раз, когда свойство, определённое для ассоциации, помечено как изменённое. Если массив, интерпретируется как список ассоциаций, которые нужно сохранить. Можно указать различные параметры для сохранения на объектах таблиц ассоциаций, используя этот ключ, делая пользовательские параметры значением массива. Если false связанные записи не будут сохранены. (по умолчанию: true)
  • checkExisting: Проверять, существует ли сущность, предполагая, что сущность не новая, и первичный ключ задан.

События

При сохранении этот метод будет вызывать четыре события:

  • Model.beforeRules: Будет вызван непосредственно перед проверкой правил для переданной сущности, если ключ checkRules в $options не установлен в false. Слушатели получат в качестве аргументов сущность, массив параметров и тип операции. Если событие остановлено, результат проверки правил будет установлен на результат самого события.
  • Model.afterRules: Будет вызван непосредственно после вызова метода checkRules() для сущности. Слушатели получат в качестве аргументов сущность, массив параметров, результат проверки правил и тип операции. Если событие остановлено, результат проверки будет установлен на результат самого события.
  • Model.beforeSave: Будет вызван непосредственно перед вычислением списка полей, которые нужно сохранить. Он получает как аргументы сущность и массив параметров. Массив параметров передается как ArrayObject, поэтому любые изменения в нём будут отражены в каждом слушателе и запомнены в конце события, чтобы его можно было использовать для остальной части операции сохранения. Возврат false в любом из слушателей прервёт процесс сохранения. Если событие остановлено с помощью API событий, свойство result объекта события будет возвращено. Это может быть полезно, когда реализуется собственная стратегия сохранения внутри слушателя.
  • Model.afterSave: Будет вызван после успешного вставки или сохранения, слушатели получат в качестве аргументов сущность и массив параметров. Тип выполненной операции (вставка или обновление) можно определить, проверив метод сущности isNew, true означает вставку, а false - обновление.
  • Model.afterSaveCommit: Будет вызван после завершения транзакции для сохранения в атомарном режиме, слушатели получат в качестве аргументов сущность и массив параметров.

Этот метод определит, нужно ли вставлять или обновлять переданную сущность в базе данных. Он делает это, проверяя метод isNew в сущности. Если сущность, которую нужно сохранить, возвращает значение, отличное от пустого, из метода errors(), она не будет сохранена.

Сохранение в связанных таблицах

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

// Only save the comments association
$articles->save($entity, ['associated' => ['Comments']);

// Save the company, the employees and related addresses for each of them.
// For employees do not check the entity rules
$companies->save($entity, [
  'associated' => [
    'Employees' => [
      'associated' => ['Addresses'],
      'checkRules' => false
    ]
  ]
]);

// Save no associations
$articles->save($entity, ['associated' => false]);

Параметры

Cake\Datasource\EntityInterface $entity
сущность, которую нужно сохранить
массив|ArrayAccess $options необязательно []
Параметры для использования при сохранении.

Возвращает

Cake\Datasource\EntityInterface|boolean

Возбуждает

Cake\ORM\Exception\RolledbackTransactionException

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


Реализация

Cake\Datasource\RepositoryInterface::save()

saveMany()source public

saveMany( array|Cake\ORM\ResultSet $entities , array|ArrayAccess $options [] )

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

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

Параметры

массив|Cake\ORM\ResultSet $entities
Сущности для сохранения.
массив|ArrayAccess $options необязательно []
Параметры, используемые при вызове Table::save() для каждой сущности.

Возвращает

boolean|массив|Cake\ORM\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( array $fields , mixed $conditions )

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

Параметры

массив $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'
 ]
]);

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

Параметры

mixed $value
Значение столбца, которое нужно проверить на уникальность
array $options

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

array $context optional null
Контекст валидации или null.

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

boolean
true, если значение уникально

Методы, используемые из 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
устанавливаемый менеджер событий

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

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–2016 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.
http://api.cakephp.org/3.2/class-Cake.ORM.Table.html

Spec-Zone.ru

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