ereminmdev/yii2-deleted

存储/恢复已删除的模型。

v1.0.12 2024-04-28 14:25 UTC

This package is auto-updated.

Last update: 2024-09-28 15:28:53 UTC


README

模型、行为和动作用于存储/恢复活动记录。

安装

composer require --prefer-dist ereminmdev/yii2-deleted

并运行迁移

yii migrate --migrationPath=@vendor/ereminmdev/yii2-deleted/migrations --interactive=0

使用

  1. 将行为添加到活动记录模型
public function behaviors()
    {
        return [
            DeletedBehavior::class,
        ];
    }

或使用自定义注释

public function behaviors()
    {
        return [
            [
                'class' => DeletedBehavior::class,
                'comment' => function (self $model, DeletedBehavior $behavior) {
                    return 'Модель «' . $model->title . '»';
                },
            ],
        ];
    }
  1. 将动作添加到网站控制器
public function actions()
{
    return [
        'deleted-restore' => [
            'class' => 'ereminmdev\yii2\deleted\RestoreAction',
        ],
    ];
}

恢复

创建指向恢复动作的URL,并指定需要恢复的Deleted模型的id参数

echo Url::toRoute(['/site/deleted-restore', 'id'=>MODEL_ID]);

定时器清理词

例如,清除超过1个月的Deleted模型

Deleted::deleteAll(['<', 'created_at', strtotime('-1 month')]);

如果需要EVENT_BEFORE_DELETE或EVENT_AFTER_DELETE事件

$query = Deleted::find()->andWhere(['<', 'created_at', strtotime('-1 month')]);
foreach ($query->each() as $model) $model->delete();