Класс CounterCacheBehavior
Поведение CounterCache
Позволяет моделям кэшировать количество соединений в заданном отношении.
Примеры с моделью Post, относящейся к модели User
Обычный кэш счётчика
[
'Users' => [
'post_count'
]
] Кэш счётчика со scope
[
'Users' => [
'posts_published' => [
'conditions' => [
'published' => true
]
]
]
] Кэш счётчика с использованием пользовательского find
[
'Users' => [
'posts_published' => [
'finder' => 'published' // Will be using findPublished()
]
]
] Кэш счётчика с использованием лямбда-функции, возвращающей счёт. Это эквивалентно примеру #2
[
'Users' => [
'posts_published' => function (Event $event, EntityInterface $entity, Table $table) {
$query = $table->find('all')->where([
'published' => true,
'user_id' => $entity->get('user_id')
]);
return $query->count();
}
]
] При использовании лямбда-функции можно вернуть false для отключения обновления значения счётчика для текущей операции.
Игнорировать обновление поля, если оно изменено
[
'Users' => [
'posts_published' => [
'ignoreDirty' => true
]
]
] Вы можете полностью отключить обновления счётчика, передав опцию ignoreCounterCache в операцию сохранения:
$this->Articles->save($article, ['ignoreCounterCache' => true]);
- Cake\ORM\Behavior implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait
-
Cake\ORM\Behavior\CounterCacheBehavior
Краткое описание свойств
-
$_ignoreDirtyprotectedХранит поля, которые должны быть проигнорированыarray
Унаследованные свойства
Краткое описание методов
- _getCount() protectedИзвлекает и возвращает количество для одного поля в ассоциации
- _processAssociation() protectedОбновляет кэш счётчика для одной ассоциации
- _processAssociations() protectedИтерирует все ассоциации и обновляет кэши счётчиков.
- afterDelete() publicОбработчик после удаления.
- afterSave() publicОбработчик после сохранения.
- beforeSave() publicОбработчик перед сохранением.
Подробное описание методов
_getCount()source protected
_getCount( array $config , array $conditions )
Извлекает и возвращает количество для одного поля в ассоциации
Параметры
- массив
$config - Конфигурация кэша счётчика для одного поля
- массив
$conditions - Дополнительные условия, задаваемые запросу
Возвращает
целое числоЧисло отношений, соответствующих заданной конфигурации и условиям
_processAssociation()source protected
_processAssociation( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , Cake\ORM\Association $assoc , array $settings )
Обновляет кэш счётчика для одной ассоциации
Параметры
-
Cake\Event\Event$event - Экземпляр события.
-
Cake\Datasource\EntityInterface$entity - Сущность
-
Cake\ORM\Association$assoc - Объект ассоциации
- массив
$settings - Настройки для кэша счётчика для этой ассоциации
Исключения
RuntimeExceptionЕсли передан недопустимый вызываемый объект.
_processAssociations()source protected
_processAssociations( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Итерирует все ассоциации и обновляет кэши счётчиков.
Параметры
-
Cake\Event\Event$event - Экземпляр события.
-
Cake\Datasource\EntityInterface$entity - Сущность.
afterDelete()source public
afterDelete( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Обработчик после удаления.
Обеспечивает обновление кэша счётчика при удалении записи.
Параметры
-
Cake\Event\Event$event - Событие после удаления, которое было запущено.
-
Cake\Datasource\EntityInterface$entity - Сущность, которая была удалена.
- ArrayObject
$options - Параметры запроса
afterSave()source public
afterSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Обработчик после сохранения.
Обеспечивает обновление кэша счётчика при создании или обновлении новой записи.
Параметры
-
Cake\Event\Event$event - Событие после сохранения, которое было запущено.
-
Cake\Datasource\EntityInterface$entity - Сущность, которая была сохранена.
- ArrayObject
$options - Параметры запроса
beforeSave()source public
beforeSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Обработчик перед сохранением.
Проверка, если поле, которое должно быть проигнорировано, изменено
Параметры
-
Cake\Event\Event$event - Событие перед сохранением, которое было запущено
-
Cake\Datasource\EntityInterface$entity - Сущность, которая будет сохранена
- ArrayObject
$options - Параметры запроса
Методы, унаследованные от Cake\ORM\Behavior
__construct()source public
__construct( Cake\ORM\Table $table , array $config = [] )
Конструктор
Объединяет конфигурацию со значением по умолчанию и хранит её в свойстве config
Параметры
-
Cake\ORM\Table$table - Таблица, к которой прикреплено это поведение.
- массив
$configoptional [] - Конфигурация для этого поведения.
_reflectionCache()source protected
_reflectionCache( )
Получение методов, реализованных этим поведением
Использует метод implementedEvents() для исключения методов обратного вызова. Методы, начинающиеся с _ будут проигнорированы, также как и методы, объявленные в Cake\ORM\Behavior
Возвращает
массивИсключения
ReflectionException_resolveMethodAliases()source protected
_resolveMethodAliases( string $key , array $defaults , array $config )
Удаляет алиасированные методы, которые в противном случае будут дублироваться пользовательской конфигурацией.
Параметры
- строка
$key - Ключ для фильтрации.
- массив
$defaults - Карта методов по умолчанию.
- массив
$config - Настроенные карты методов.
Возвращает
массивСписок конфигурационных данных без дублирования.
getTable()source public
getTable( )
Получение экземпляра таблицы, к которой привязано это поведение.
Возвращает
Cake\ORM\TableЭкземпляр привязанной таблицы.
implementedEvents()source public
implementedEvents( )
Получение обращений к моделям, к которым проявляет интерес это поведение.
Через определение одного из методов обратного вызова подразумевается, что поведение заинтересовано в соответствующем событии.
Переопределите этот метод, если вам нужно добавить слушателей событий, не являющихся стандартными. Или если вы хотите, чтобы ваше поведение отслеживало нестандартные события.
Возвращает
массивРеализация
Cake\Event\EventListenerInterface::implementedEvents() implementedFinders()source public
implementedFinders( )
Реализованные поискеры
Предоставляет отображение alias->метод, которое показывает, какие поискеры реализует поведение. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
В приведённом примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()
Рекомендуется (хотя и не обязательно) определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для вывода списка доступных методов. Смотрите примеры в основных поведении.
Возвращает
arrayВызывает исключение
ReflectionExceptionimplementedMethods()source public
implementedMethods( )
Реализованные методы
Предоставляет отображение alias->метод, которое показывает, какие методы реализует поведение. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
В приведённом примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется (хотя и не обязательно) определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для вывода списка доступных методов. Смотрите примеры в основных поведении.
Возвращает
arrayВызывает исключение
ReflectionExceptioninitialize()source public
initialize( array $config )
Метод хука конструктора.
Реализуйте этот метод, чтобы избежать необходимости переписывать конструктор и вызывать родительский.
Параметры
- массив
$config - Настройки конфигурации, предоставленные данному поведению.
verifyConfig()source public
verifyConfig( )
verifyConfig
Проверяет, что реализованные ключи содержат значения, указывающие на вызываемый метод.
Вызывает исключение
Cake\Core\Exception\Exceptionесли конфигурация неверна
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаляет один ключ конфигурации.
Параметры
- строка
$key - Ключ для удаления.
Вызывает исключение
Cake\Core\Exception\Exceptionесли попытка перезаписать существующую конфигурацию
_configRead()source protected
_configRead( string|null $key )
Считывает ключ конфигурации.
Параметры
- строка или null
$key - Ключ для чтения.
Возвращает
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge = false )
Записывает ключ конфигурации.
Параметры
- строка или массив
$key - Ключ для записи.
- смешанный
$value - Значение для записи.
- логическое значение или строка
$mergeопционально false True для рекурсивного объединения, 'shallow' для простого объединения, false для перезаписи, по умолчанию false.
Вызывает исключение
Cake\Core\Exception\Exceptionесли попытка перезаписать существующую конфигурацию
config()source public deprecated
config( string|array|null $key = null , mixed|null $value = null , boolean $merge = true )
Получает/устанавливает конфигурацию.
Использование
Чтение всей конфигурации:
$this->config();
Чтение конкретного значения:
$this->config('key'); Чтение вложенного значения:
$this->config('some.nested.key'); Установка конкретного значения:
$this->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Устарело
3.4.0 используйте setConfig()/getConfig() вместо этого.Параметры
- строка|массив|null
$keyопционально null - Ключ для получения/установки или полный массив настроек.
- смешанный|null
$valueопционально null - Значение для установки.
- логическое значение
$mergeопционально true - Выполнять рекурсивное объединение или перезаписывать существующую конфигурацию, по умолчанию true.
Возвращает
mixedЗначение конфигурации, которое читается, или сам объект при операциях записи.
Вызывает исключение
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallow()source public
configShallow( string|array $key , mixed|null $value = null )
Объединяет предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигурации.
- смешанный|null
$valueопционально null - Значение для установки.
Возвращает
$this
getConfig()source public
getConfig( string|null $key = null , mixed $default = null )
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение конкретного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
- строка или null
$keyопционально null - Ключ для получения или null для всей конфигурации.
- смешанный
$defaultопционально null - Возвращаемое значение, когда ключ не существует.
Возвращает
mixedДанные конфигурации по указанному ключу или null, если ключ не существует.
setConfig()source public
setConfig( string|array $key , mixed|null $value = null , boolean $merge = true )
Устанавливает конфигурацию.
Использование
Установка конкретного значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
- строка или массив
$key - Ключ для установки или полный массив конфигурации.
- смешанный|null
$valueопционально null - Значение для установки.
- логическое значение
$mergeопционально true - Выполнять рекурсивное объединение или перезаписывать существующую конфигурацию, по умолчанию true.
Возвращает
$this
Вызывает исключение
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
Подробности свойств
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.8/class-Cake.ORM.Behavior.CounterCacheBehavior.html