mikk150/yii2-tagdependency-invalidator

在模型更新/删除和插入时无效化Yii2的TagDependency标签

1.2.0 2021-09-15 12:41 UTC

This package is auto-updated.

Last update: 2024-09-15 18:59:45 UTC


README

Build Status codecov

使用方法

要使用此行为,将其添加到模型或组件的行为模型中

class Book extends yii\base\ActiveRecord
{
    const CACHE_KEY = 'BOOKS_ARE_AWESOME!';

    public function behaviors()
    {
        return [
            [
                'class' => 'mikk150\tagdependency\InvalidateBehavior',
                'tags' => [
                    [
                        self::CACHE_KEY,
                        'id' => 'primaryKey',
                    ],
                ]
            ]
        ]
    }
}

然后在您想要使用缓存模型的地方,只需这样做

public function actionView($id)
{
    return Yii::$app->cache->getOrSet(['book', $id], function () use ($id) {
        return Book::find()->byId($id)->one();
    }, null, new TagDependency([
        'tags' => [
            [
                Book::CACHE_KEY,
                'id' => $id,
            ]
        ]
    ]))
}

如果触发BaseActiveRecord::EVENT_AFTER_UPDATEBaseActiveRecord::EVENT_AFTER_INSERTBaseActiveRecord::EVENT_AFTER_DELETE事件,则根据键规则自动为该模型无效化缓存

此外,您还可以通过在model1上执行invalidate()来清除缓存