'handle' ]; } public function handle() { Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_UPDATE, [$this, 'log']); Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_INSERT, [$this, 'log']); Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_DELETE, [$this, 'log']); } public function log($event) { //未登录不保存日志 if($event->sender instanceof AdminLog || !$event->sender->primaryKey() || Yii::$app->user->isGuest) { return; } if ($event->name == ActiveRecord::EVENT_AFTER_INSERT) { $description = "%s新增了表%s %s:%s的%s"; } elseif($event->name == ActiveRecord::EVENT_AFTER_UPDATE) { $description = "%s修改了表%s %s:%s的%s"; } else { $description = "%s删除了表%s %s:%s%s"; } if (!empty($event->changedAttributes)) { $desc = ''; foreach($event->changedAttributes as $name => $value) { $desc .= $name . ' : ' . $value . '=>' . $event->sender->getAttribute($name) . ','; } $desc = substr($desc, 0, -1); } else { $desc = ''; } $userName = !Yii::$app->user->isGuest ? Yii::$app->user->identity->username : '未登录用户'; $tableName = $event->sender->tableSchema->name; $description = sprintf($description, $userName, $tableName, $event->sender->primaryKey()[0], is_array($event->sender->getPrimaryKey()) ? current($event->sender->getPrimaryKey()) : $event->sender->getPrimaryKey(), $desc); $route = Url::to(); $userId = !Yii::$app->user->isGuest ? Yii::$app->user->id : 0; $ip = ip2long(Yii::$app->request->userIP); $data = [ 'route' => $route, 'description' => $description, 'user_id' => $userId, 'ip' => $ip ]; $model = new AdminLog(); $model->setAttributes($data); $model->save(); } }