fecshop中使用 yii2 软删除扩展

技术分享 · Axin · 于 5年前 发布 · 2752 次阅读

参考文献:

行为

Yii-ar-softdelete

其它行为 ¶
有几种内置和外部行为可用:

yii\behaviors\BlameableBehavior - 使用当前用户 ID 自动填充指定的属性。
yii\behaviors\SluggableBehavior - 自动填充指定的属性,其值可以在 URL 中用作 slug。
yii\behaviors\AttributeBehavior - 在发生特定事件时自动为 ActiveRecord 对象的一个或多个属性 指定一个指定的值。
yii2tech\ar\softdelete\SoftDeleteBehavior - 提供软删除和软恢复 ActiveRecord 的 方法。即将记录标记为已删除的设置标记或状态。
yii2tech\ar\position\PositionBehavior - 允许通过提供重新排序方法来 管理整数字段中的记录顺序。

步骤说明:

牵涉到Yii2的中的操作 引入SoftDeleteBehavior文件

其中参看官网-行为说明

跟上面参考文献中的Yii-ar-softdelete

use yii\db\ActiveRecord;
use yii2tech\ar\softdelete\SoftDeleteBehavior;

class Item extends ActiveRecord
{
    public function behaviors()
    {
        return [
            'softDeleteBehavior' => [
                'class' => SoftDeleteBehavior::className(),
                'softDeleteAttributeValues' => [
                    //原文档中是
                    //'isDeleted' => true
                    //注:我这里用的是时间戳
                    'deleted_at' => time()
                ],
            ],
        ];
    }
}

这里数据库增加字段 deleted_at

  • 调用(具体参看参考文献)

调用删除:

$ids = Yii::$app->request->get('ids');
$row = $this->model::findOne($ids);
$res = $row->softDelete();
var_dump($res);// return true

结果如图:

本文由 Axin 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 4 条回复 技术分享
Fecmall#15年前 0 个赞

mongodb, mysql 都可以方便的安装使用不?

Axin#25年前 0 个赞

@Fecshop #1楼 mongodb 没测试,需要测试下。而且如果要像laravel那样的,估计要改写下扩展,最简单就加个软删除字段,updateAll就行了。查询要多加个查询条件。原理就是这样。没什么,我只是看到网上有现成的。直接拿来用了

Fecmall#35年前 0 个赞

@Axin #2楼 嗯,看着挺不错的,在框架的层面解决,代码侵入性小。

Axin#45年前 0 个赞

@Fecshop #3楼 恩,我也是大概看了下。可控性好

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics