Spec-Zone.ru › CakePHP 3.1

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

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

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

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

Основной способ извлечения данных — использование 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) Срабатывает после сохранения сущности.
  • 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

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

__callsource public

__call( string $method , array $args )

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

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

Параметры

строка $method
имя метода, который нужно вызвать
массив $args
Список аргументов, переданных функции

Возвращает

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

Выбрасывает

BadMethodCallException
\BadMethodCallException

__constructsource public

__construct( array $config [] )

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

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

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

Параметры

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

__debugInfosource public

__debugInfo( )

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

Возвращает

array
массив

__getsource public

__get( string $property )

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

Параметры

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

Возвращает

Cake\ORM\Association
\Cake\ORM\Association

Выбрасывает

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

__issetsource public

__isset( string $property )

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

Параметры

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

Возвращает

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

_dynamicFindersource protected

_dynamicFinder( string $method , array $args )

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

Параметры

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

Возвращает

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

Выбрасывает

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

_initializeSchemasource 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

_insertsource protected

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

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

Параметры

Cake\Datasource\EntityInterface $entity
сущность-субъект, из которой был извлечен $data
массив $data
Фактические данные, которые необходимо сохранить

Возвращает

Cake\Datasource\EntityInterface|boolean
\Cake\Datasource\EntityInterface|bool

Выбрасывает

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

_newIdsource protected

_newId( array $primary )

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

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

Параметры

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

Возвращает

mixed
Либо null, либо новое значение первичного ключа.

_processDeletesource protected

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

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

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

Параметры

Cake\Datasource\EntityInterface $entity
Сущность, которую нужно удалить.
ArrayObject $options
Параметры удаления.

Возвращает

boolean
успешно

Выбрасывает

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

_processSavesource protected

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

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

Параметры

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

Возвращает

Cake\Datasource\EntityInterface|boolean
\Cake\Datasource\EntityInterface|bool

Выбрасывает

RuntimeException
При отсутствии некоторых первичных ключей сущности.

_setFieldMatcherssource protected

_setFieldMatchers( array $options , array $keys )

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

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

Параметры

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

Возвращает

array
array

_updatesource protected

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

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

Параметры

Cake\Datasource\EntityInterface $entity
сущность-субъект, из которой был извлечен $data
array $data
фактические данные, которые необходимо сохранить

Возвращает

Cake\Datasource\EntityInterface|boolean
\Cake\Datasource\EntityInterface|bool

Выбрасывает

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

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

addBehaviorsource public

addBehavior( string $name , array $options [] )

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

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

Пример:

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

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

Поведения, как правило, загружаются во время Table::initialize().

Параметры

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

Выбрасывает

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

См.

Cake\ORM\Behavior

aliassource public

alias( string|null $alias null )

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

Параметры

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

Возвращает

string
строка

Реализация

Cake\Datasource\RepositoryInterface::alias()

aliasFieldsource public

aliasField( string $field )

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

Параметры

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

Возвращает

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

associationsource public

association( string $name )

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

Параметры

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

Возвращает

Cake\ORM\Association|null
Либо ассоциацию, либо null.

associationssource public

associations( )

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

Возвращает

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

behaviorssource public

behaviors( )

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

Возвращает

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

belongsTosource 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
\Cake\ORM\Association\BelongsTo
END_OF_DOCUMENT_MARKER

belongsToManysource public

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

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

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

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

  • className: Имя класса объекта целевой таблицы.
  • targetTable: Экземпляр объекта таблицы, который будет использоваться в качестве целевой таблицы.
  • foreignKey: Название поля, используемого в качестве внешнего ключа.
  • targetForeignKey: Название поля, используемого в качестве внешнего ключа для целевой таблицы.
  • joinTable: Название таблицы, представляющей связь между двумя таблицами
  • through: Если вы используете уже созданную таблицу связи, установите этот ключ в экземпляр настроек таблицы, содержащий ассоциации с исходной и целевой таблицами в этой ассоциации.
  • 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
\Cake\ORM\Association\BelongsToMany

buildRulessource public

buildRules( Cake\ORM\RulesChecker $rules )

Параметры

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

Возвращает

Cake\ORM\RulesChecker
\Cake\ORM\RulesChecker

callFindersource public

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

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

Параметры

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

Возвращает

Cake\ORM\Query
\Cake\ORM\Query

Выбрасывает

BadMethodCallException
\BadMethodCallException

connectionsource public

connection( Cake\Datasource\ConnectionInterface $conn null )

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

Параметры

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

Возвращает

Cake\Datasource\ConnectionInterface
\Cake\Datasource\ConnectionInterface

defaultConnectionNamesource public static

defaultConnectionName( )

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

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

Возвращает

string
строка

См.

Cake\ORM\TableRegistry::get()

deletesource 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
success

Реализация

Cake\Datasource\RepositoryInterface::delete()

deleteAllsource public

deleteAll( mixed $conditions )

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

Параметры

смешанный $conditions
Условие, которое должно быть применено. Принимает всё, что может принять Query::where().

Возвращает

integer
Количество. Возвращает количество затронутых строк.

Реализация

Cake\Datasource\RepositoryInterface::deleteAll()

displayFieldsource public

displayField( string|null $key null )

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

Параметры

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

Возвращает

string
строка

entityClasssource public

entityClass( string|null $name null )

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

Параметры

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

Возвращает

string
строка

Выбрасывает

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

existssource public

exists( array|ArrayAccess $conditions )

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

Параметры

массив|ArrayAccess $conditions
список условий для передачи в запрос

Возвращает

boolean
bool

Реализация

Cake\Datasource\RepositoryInterface::exists()

findsource 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']);

Вызов методов поиска

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

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

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

Параметры

строка $type необязательно 'all'
тип запроса для выполнения
массив|ArrayAccess $options необязательно []
Массив, который будет передан в Query::applyOptions()

Возвращает

Cake\ORM\Query
Билдер запроса

Реализация

Cake\Datasource\RepositoryInterface::find()

findAllsource public

findAll( Cake\ORM\Query $query , array $options )

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

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

Параметры

Cake\ORM\Query $query
Запрос для поиска
массив $options
Параметры для поиска

Возвращает

Cake\ORM\Query
Построитель запроса

findListsource 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
Построитель запроса

findOrCreatesource public

findOrCreate( array $search , callable $callback null )

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

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

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

Параметры

массив $search
Критерии для поиска существующих записей.
обратная функция $callback необязательно null
Обратная функция, которая будет вызвана для вновь созданных объектов. Эта функция будет вызвана *перед* сохранением объекта.

Возвращает

Cake\Datasource\EntityInterface
Объект.

findThreadedsource 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
Построитель запроса

getsource public

get( mixed $primaryKey , array|ArrayAccess $options [] )

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

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

Получение статьи и некоторых её взаимосвязей:

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

Параметры

смешанное $primaryKey
Значение первичного ключа для поиска
массив|ArrayAccess $options необязательно []
Параметры, принимаемые Table::find()

Возвращает

Cake\Datasource\EntityInterface
\Cake\Datasource\EntityInterface

Исключения

Cake\Datasource\Exception\InvalidPrimaryKeyException
При некорректном количестве элементов в $primaryKey.

Реализация

Cake\Datasource\RepositoryInterface::get()

hasBehaviorsource public

hasBehavior( string $name )

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

Параметры

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

Возвращает

boolean
Существует ли поведение.

hasFieldsource public

hasField( string $field )

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

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

Параметры

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

Возвращает

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

Реализация

Cake\Datasource\RepositoryInterface::hasField()

hasFindersource public

hasFinder( string $type )

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

Параметры

строка $type
Название поиска для проверки

Возвращает

boolean
bool

hasManysource public

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

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

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

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

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

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

Параметры

строка $associated
Псевдоним целевой таблицы. Используется для уникальной идентификации ассоциации
массив $options необязательно []
Список опций для конфигурации определения ассоциации

Возвращает

Cake\ORM\Association\HasMany
\Cake\ORM\Association\HasMany

hasOnesource public

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

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

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

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

  • className: Имя класса объекта целевой таблицы
  • targetTable: Экземпляр объекта таблицы, используемый в качестве целевой таблицы
  • foreignKey: Имя поля, используемого в качестве внешнего ключа. Если false, внешний ключ не используется
  • dependent: Устанавливается в true, если вы хотите, чтобы CakePHP каскадно удалял записи в связанной таблице при удалении записи в этой таблице. Устанавливается в 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
\Cake\ORM\Association\HasOne

implementedEventssource public

implementedEvents( )

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

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

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

Стандартное соответствие методов:

  • Model.beforeMarshal => beforeMarshal
  • 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
array

Реализация

Cake\Event\EventListenerInterface::implementedEvents()

initializesource public

initialize( array $config )

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

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

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

Параметры

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

loadIntosource 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\Datasource\EntityInterface|array

См.

Cake\ORM\Query::contain()

marshallersource public

marshaller( )

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

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

Возвращает

Cake\ORM\Marshaller
\Cake\ORM\Marshaller

См.

Cake\ORM\Marshaller

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

newEntitysource 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\EntityInterface

Реализация

Cake\Datasource\RepositoryInterface::newEntity()

patchEntitiessource 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
array

Реализация

Cake\Datasource\RepositoryInterface::patchEntities()
END_OF_DOCUMENT_MARKER

patchEntitysource 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\EntityInterface

Реализация

Cake\Datasource\RepositoryInterface::patchEntity()

primaryKeysource public

primaryKey( string|array|null $key null )

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

Параметры

строка|массив|null $key дополнительно null
устанавливает новое имя, используемое в качестве первичного ключа

Возвращает

string|array
строка|массив

querysource public

query( )

Создаёт новый экземпляр запроса для этого репозитория

Возвращает

Cake\ORM\Query
\Cake\ORM\Query

Реализация

Cake\Datasource\RepositoryInterface::query()

registryAliassource public

registryAlias( string|null $registryAlias null )

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

Параметры

строка|null $registryAlias дополнительно null
ключ для доступа к этому объекту

Возвращает

string
строка

removeBehaviorsource public

removeBehavior( string $name )

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

Пример:

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

$this->removeBehavior('Tree');

Параметры

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

См.

Cake\ORM\Behavior

savesource 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\Datasource\EntityInterface|bool

Реализация

Cake\Datasource\RepositoryInterface::save()

schemasource 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
\Cake\Database\Schema\Table

tablesource public

table( string|null $table null )

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

Параметры

строка|null $table дополнительно null
новое имя таблицы

Возвращает

string
строка

updateAllsource public

updateAll( array $fields , mixed $conditions )

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

Параметры

массив $fields
Хэш поля => новое значение.
смешанное $conditions
Условие, принимающее всё, что Query::where() может принять.

Возвращает

integer
Количество. Возвращает количество изменённых строк.

Реализация

Cake\Datasource\RepositoryInterface::updateAll()

validateUniquesource 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 необязательно null
Либо контекст валидации, либо null.

Возвращает

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

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

dispatchEventsource public

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

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

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

Параметры

string $name
Название события.
array|null $data необязательно null
Любое значение, которое вы хотите передать с этим событием, чтобы его могли прочитать слушатели.
object|null $subject необязательно null
Объект, к которому относится это событие ($this по умолчанию).

Возвращает

Cake\Event\Event
\Cake\Event\Event

Реализация

Cake\Event\EventDispatcherInterface::dispatchEvent()

eventManagersource public

eventManager( Cake\Event\EventManager $eventManager null )

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

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

Параметры

Cake\Event\EventManager $eventManager необязательно null
устанавливаемый eventManager

Возвращает

Cake\Event\EventManager
\Cake\Event\EventManager

Реализация

Cake\Event\EventDispatcherInterface::eventManager()

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

checkRulessource public

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

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

Параметры

Cake\Datasource\EntityInterface $entity
Сущность, подлежащая проверке на валидность.
string $operation необязательно Cake\Datasource\RulesChecker::CREATE
Выполняемая операция. Либо 'create', 'update', либо 'delete'.
ArrayObject|array $options необязательно null
Опции, которые нужно передать правилам.

Возвращает

boolean
bool

rulesCheckersource public

rulesChecker( )

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

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

Возвращает

Cake\Datasource\RulesChecker
\Cake\Datasource\RulesChecker

См.

Cake\Datasource\RulesChecker

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

validationDefaultsource public

validationDefault( Cake\Validation\Validator $validator )

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

Параметры

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

Возвращает

Cake\Validation\Validator
\Cake\Validation\Validator

validatorsource public

validator( string $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 $name необязательно null
Имя набора валидации, который нужно вернуть
Cake\Validation\Validator $validator необязательно null
Экземпляр валидатора для хранения, use null для получения валидатора.

Возвращает

Cake\Validation\Validator
\Cake\Validation\Validator

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

string DEFAULT_VALIDATOR

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

'default'
string RULES_CLASS

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

'Cake\ORM\RulesChecker'
string VALIDATOR_PROVIDER_NAME

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

'table'

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

$_aliassource

protected строка

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

$_associationssource

protected Cake\ORM\AssociationCollection

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

$_behaviorssource

protected Cake\ORM\BehaviorRegistry

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

$_connectionsource

protected Cake\Datasource\ConnectionInterface

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

$_displayFieldsource

protected строка

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

$_entityClasssource

protected строка

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

$_primaryKeysource

protected строка|массив

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

$_registryAliassource

protected строка

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

$_schemasource

protected Cake\Database\Schema\Table

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

$_tablesource

protected строка

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

Свойства, используемые из Cake\Event\EventDispatcherTrait

$_eventClasssource

protected строка

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

'\Cake\Event\Event'

$_eventManagersource

protected Cake\Event\EventManager

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

null

Свойства, используемые из Cake\Datasource\RulesAwareTrait

$_rulesCheckersource

protected Cake\Datasource\RulesChecker

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

Свойства, используемые из Cake\Validation\ValidatorAwareTrait

$_validatorClasssource

protected строка

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

'\Cake\Validation\Validator'

$_validatorssource

protected массив

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

[]

© 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.1/class-Cake.ORM.Table.html

Spec-Zone.ru

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