Класс 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 - Настройки кэша счетчика для этой ассоциации
_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 - Таблица, к которой прикреплено это поведение.
- массив
$configнеобязательно [] - Конфигурация этого поведения.
_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( )
implementedFinders
Предоставляет отображение «псевдоним» → «имя метода», описывающее, какие поискеры реализует поведение. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
В приведенном выше примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры см. в основных поведениях.
Возвращает
arrayimplementedMethods()source public
implementedMethods( )
implementedMethods
Предоставляет отображение «псевдоним» → «имя метода», описывающее, какие методы реализует поведение. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
В приведенном выше примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры см. в основных поведениях.
Возвращает
arrayinitialize()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 - Ключ для чтения.
Возвращает
смешанный_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Записывает ключ конфигурации.
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный
$value - Значение для записи.
- булево|строка
$mergeнеобязательно false Истина для рекурсивного слияния, «shallow» для простого слияния, ложь для перезаписи, по умолчанию ложь.
Исключения
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–2017 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.4/class-Cake.ORM.Behavior.CounterCacheBehavior.html