Класс Таблица
Представляет отдельную таблицу базы данных.
Предоставляет методы для извлечения данных из неё и управления ассоциациями этой таблицы с другими таблицами. Можно создать несколько экземпляров этого класса для одной и той же таблицы базы данных с различными псевдонимами, что позволяет более богатым и выразительным способом обращаться к структуре базы данных.
Извлечение данных
Основной способ извлечения данных — использование 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\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 для построения соответствий из связанного значения
Возвращает
arrayarray
_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\Behavioraliassource 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
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необязательно [] - Параметры для удаления.
Возвращает
booleansuccess
Реализация
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 - список условий для передачи в запрос
Возвращает
booleanbool
Реализация
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 - Проверяемое поле.
Возвращает
booleanTrue, если поле существует, false - если нет.
Реализация
Cake\Datasource\RepositoryInterface::hasField() hasFindersource public
hasFinder( string $type )
Возвращает true, если поиск существует для таблицы
Параметры
- строка
$type - Название поиска для проверки
Возвращает
booleanbool
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
$optionsoptional [] - список опций для настройки определения ассоциации
Возвращает
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
Возвращает
arrayarray
Реализация
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\MarshallernewEntitiessource 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
$optionsoptional [] - Список опций для гидратации объектов.
Возвращает
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
$dataoptional null - Данные для создания сущности.
- array
$optionsoptional [] - Список опций для гидратации объекта.
Возвращает
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
$optionsoptional [] - Список опций для гидратации объектов.
Возвращает
arrayarray
Реализация
Cake\Datasource\RepositoryInterface::patchEntities() 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\Behaviorsavesource 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.
Возвращает
booleantrue, если значение уникально
Методы, используемые из 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 - Опции, которые нужно передать правилам.
Возвращает
booleanbool
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' |
Резюме свойств
Свойства, используемые из 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
© 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