wodrow / yii2wsoftdelete

为yii2模型提供软删除功能

安装次数: 16

依赖: 1

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

公开问题: 0

类型:yii2-extension

1.0.1 2022-11-12 15:32 UTC

This package is auto-updated.

Last update: 2024-09-12 19:37:48 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

为Yii2框架提供的软删除扩展。

此扩展确保软删除具有与原生删除一致的行为,并且对IDE友好。

安装

安装此扩展的最佳方式是通过 composer

运行以下命令之一:

php composer.phar require --prefer-dist wodrow/yii2wsoftdelete "^1.0.1"

"wodrow/yii2wsoftdelete": "^1.0.1"

将以下内容添加到您的 composer.json 文件的 require 部分。

使用方法

扩展安装后,只需在代码中使用即可

编辑模型类

use wodrow\softdelete\SoftDeleteBehavior;
use wodrow\softdelete\SoftDeleteTrait;

class Model extends \yii\db\ActiveRecord
{
    use SoftDeleteTrait;

    public static function getDeletedAtAttribute()
    {
        return "deleted_at";
    }

    public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors = ArrayHelper::merge($behaviors, []);
        if (static::getDeletedAtAttribute()) {
            $behaviors = ArrayHelper::merge($behaviors, [
                'soft-delete' => [
                    'class' => SoftDeleteBehavior::class,
                    'deletedAtAttribute' => static::getDeletedAtAttribute(),
                ],
            ]);
        }
        return $behaviors;
    }
}

更改数据库表结构,添加 deleted_at (int 11 unsigned) 字段并附加到 UNIQUE 索引。

API

ActiveRecord 类(SoftDelete 特性)

find 系列方法会返回 wodrow\softdelete\ActiveQuery 对象。

  • softDelete() 使用软删除模式删除数据
  • forceDelete() 使用物理删除模式强制删除数据
  • restore() 恢复被软删除的模型数据
  • isTrashed() 是否被软删除

以下命令分别是 find() / findOne() / findAll() 在不同模式下的对应版本:

所有模型(包括被软删除的):

  • findWithTrashed()
  • findOneWithTrashed($condition)
  • findAllWithTrashed($condition)

只查找被软删除的模型:

  • findOnlyTrashed()
  • findOneOnlyTrashed($condition)
  • findAllOnlyTrashed($condition)

以下命令均被重写成软删除版本:

  • find()
  • findOne()
  • findAll()
  • delete()

wodrow\softdelete\ActiveQuery

增加了 withTrashed(), withoutTrashed()onlyTrashed() 三个方法, 设置相应的查找模式。