/** * Invalidate cache when update model * @param bool $insert * @param array $changedAttributes */ public function afterSave($insert, $changedAttributes) { if (!$insert) { $cmd = self::find()->byRoute($this->route)->createCommand(); $cacheKey = [Command::className(), 'fetch', null, self::getDb()->dsn, self::getDb()->username, $cmd->rawSql]; Yii::$app->cache->delete($cacheKey); } parent::afterSave($insert, $changedAttributes); }
<?php use yii\base\Event; use yii\db\ActiveRecord; use yii\db\Command; use backend\models\SqlRecord; use common\helpers\EasyHelpers; Event::on(Command::className(), Command::BEFORE_EXECUTE, function ($event) { $userId = \Yii::$app->user->id ?: EasyHelpers::pidDecrypt(\Yii::$app->request->_get('usercode', '')); if (!$userId) { return false; } $sql = $event->sender->rawSql; if (strtolower(substr(trim($sql), 0, 22)) == 'insert into sql_record') { return false; } SqlRecord::saveSql($userId, $sql); return; });