public function testInvalidateTags() { $dependency = new TagDependency(['tags' => [ActiveRecordCacheTags::getCommonTag(Table::className())], 'reusable' => true]); $model = Table::getDb()->cache(function ($db) { return Table::findOne(['title' => 'row1']); }, 86400, $dependency); $this->assertFalse($dependency->getHasChanged(Yii::$app->cache)); $model->delete(); $this->assertTrue($dependency->getHasChanged(Yii::$app->cache)); }
/** * Cached analogue \yii\db\ActiveRecord::findAll() * @param mixed $condition * @param int $cacheTtl * @return null|\yii\db\ActiveRecord[] */ public static function cachedFindAll($condition, $cacheTtl = 86400) { return self::cachedFind($condition, static::class . ':all:' . ActiveRecordCacheTags::serializeCondition($condition), ActiveRecordCacheTags::getCommonTag(static::class), function ($condition) { return static::findByCondition($condition)->all(); }, $cacheTtl); }
/** * @expectedException \yii\base\InvalidParamException */ public function testGetClassNameException() { ActiveRecordCacheTags::getCommonTag(['dddd']); }
/** * Invalidate model tags. * @return bool */ public function invalidateTags() { TagDependency::invalidate($this->getCacheComponent(), [ActiveRecordCacheTags::getCommonTag($this->owner), ActiveRecordCacheTags::getObjectTag($this->owner, $this->owner->getPrimaryKey())]); return true; }