wodrow / yii2wsoftdelete
为yii2模型提供软删除功能
1.0.1
2022-11-12 15:32 UTC
Requires
- php: >=7.1
- yiisoft/yii2: ^2.0.6
Requires (Dev)
- yiisoft/yii2-gii: ^2.0.6
This package is auto-updated.
Last update: 2024-09-12 19:37:48 UTC
README
为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()
三个方法, 设置相应的查找模式。