Класс CounterCacheBehavior
Поведение CounterCache
Позволяет моделям кэшировать количество подключений в заданном отношении.
Примеры с моделью Post, относящейся к модели User
Обычный кэш счётчика
[
'Users' => [
'post_count'
]
] Кэш счётчика со scope
[
'Users' => [
'posts_published' => [
'conditions' => [
'published' => true
]
]
]
] Кэш счётчика с использованием пользовательского поиска
[
'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();
}
]
] Пропустить обновление поля, если оно изменено
[
'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Обработчик afterDelete.
- afterSave() publicОбработчик afterSave.
- beforeSave() publicОбработчик beforeSave.
Подробное описание методов
_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 )
Обработчик afterDelete.
Обеспечивает обновление кэша счётчика при удалении записи.
Параметры
-
Cake\Event\Event$event - Событие afterDelete, которое было запущено.
-
Cake\Datasource\EntityInterface$entity - Сущность, которая была удалена.
- ArrayObject
$options - Опции для запроса
afterSave()source public
afterSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Обработчик afterSave.
Обеспечивает обновление кэша счётчика при создании или обновлении новой записи.
Параметры
-
Cake\Event\Event$event - Событие afterSave, которое было запущено.
-
Cake\Datasource\EntityInterface$entity - Сущность, которая была сохранена.
- ArrayObject
$options - Опции для запроса
beforeSave()source public
beforeSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Обработчик beforeSave.
Проверка, если поле, которое нужно пропустить, изменено
Параметры
-
Cake\Event\Event$event - Событие beforeSave, которое было запущено
-
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
Возвращает
массив_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( )
Реализованные поисковые методы
Предоставляет отображение «псевдоним» -> «имя метода», показывающее, какие поисковые методы реализует поведение. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
В приведенном выше примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()
Рекомендуется, но не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры см. в основных поведениях
Возвращает
массивimplementedMethods()source public
implementedMethods( )
Реализованные методы
Предоставляет отображение «псевдоним» -> «имя метода», показывающее, какие методы реализует поведение. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
В приведенном выше примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется, но не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры см. в основных поведениях
Возвращает
массивinitialize()source public
initialize( array $config )
Метод-обработчик инициализации.
Реализуйте этот метод, чтобы не переопределять конструктор и вызывать родительский.
Параметры
- массив
$config - Настройки конфигурации, предоставленные этому поведению.
verifyConfig()source public
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 - Ключ для чтения.
Возвращает
смешанное_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Записывает ключ конфигурации.
Параметры
- строка|массив
$key - Ключ для записи.
- смешанное
$value - Значение для записи.
- логическое значение|строка
$mergeдополнительный false Истинно, для рекурсивного слияния, «поверхностное» для простого слияния, ложно для перезаписи, по умолчанию ложно.
Использует
Cake\Core\Exception\Exceptionесли попытка перезаписи существующей конфигурации
config()source public
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 - Выполнять ли рекурсивное слияние или перезаписывать существующую конфигурацию, по умолчанию истинно.
Возвращает
смешанноеЗначение конфигурации, которое считывается, или сам объект при операциях записи.
Использует
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 - Возвращаемое значение, когда ключ не существует.
Возвращает
смешанноеЗначение конфигурации, которое считывается.
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 - Выполнять ли рекурсивное слияние или перезаписывать существующую конфигурацию, по умолчанию истинно.
Возвращает
$this
Использует
Cake\Core\Exception\ExceptionПри попытке установить неверный ключ.
Подробное описание свойств
© 2005–2018 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.5/class-Cake.ORM.Behavior.CounterCacheBehavior.html