Yii2 软删除
什么是软删除
后台操作,删除一条记录,不希望真正的从数据库中删除,用个字段标记一下。比如delete_at。默认0。当执行删除操作,更新delete_at为当前时间戳
这样列表显示的时候只查询delete_at为0的记录。
牵涉到Yii2的中的操作
引入SoftDeleteBehavior文件
- <?php
- namespace common\behavior;
- use yii\base\Behavior;
- use yii\base\Event;
- use yii\db\ActiveRecord;
- class SoftDeleteBehavior extends Behavior
- {
- /**
- * @var string delete time attribute
- */
- public $timeAttribute = false;
- /**
- * @var string status attribute
- */
- public $statusAttribute = "is_deleted";
- /**
- * @var string deleted status attribute
- */
- public $deletedValue = 1;
- /**
- * @var string active status attribute
- */
- public $activeValue = 0;
- /**
- * @inheritdoc
- */
- public function events() {
- return [
- ActiveRecord::EVENT_BEFORE_DELETE => 'softDelete',
- ];
- }
- /**
- * Set the attribute deleted
- *
- * @param Event $event
- */
- public function softDelete($event) {
- $attributes[1] = $this->statusAttribute;
- $_attribute = $attributes[1];
- if($this->timeAttribute) {
- $this->owner->$_attribute = time();
- } else {
- $this->owner->$attributes[1] = $this->deletedValue;
- }
- // save record
- $this->owner->save(false, $attributes);
- //prevent real delete
- $event->isValid = false;
- }
- /**
- * Restore soft-deleted record
- */
- public function restore() {
- $attributes[1] = $this->statusAttribute;
- $this->owner->$attributes[1] = $this->activeValue;
- // save record
- $this->owner->save(false, $attributes);
- }
- /**
- * Force delete from database
- */
- public function forceDelete() {
- // store model so that we can detach the behavior and delete as normal
- $model = $this->owner;
- $this->detach();
- $model->delete();
- }
- }
在需要使用的Model中
- use common\behavior\SoftDeleteBehavior;
- // ...
- public function behaviors() {
- return [
- 'softDelete' => ['class' => SoftDeleteBehavior::className(),
- 'timeAttribute' => true,
- 'statusAttribute' => 'deletedAt',
- ],
- ];
- }
Controler中不用改
- public function actionDelete($id)
- {
- $this->findModel($id)->delete();
- return $this->redirect(['index']);
- }
如果真正删除,就是硬删除。
执行 $this->findModel($id)->forceDelete();
Yii2 软删除的更多相关文章
- tp5 model 中的软删除
model中需use traits\model\SoftDelete; // 数据表中需添加一个 delete_time 字段保存删除时间 namespace app\index\model; use ...
- laravel框架总结(九) -- 软删除
当模型被软删除时,它们并不会真的从数据库中被移除.而是会在模型上设置一个 deleted_at 属性并将其添加到数据库.如果对应模型被软删除,则deleted_at字段的值为删除时间,否则该值为空. ...
- 软删除脏数据job笔记
某次处理一个case,发现线上库里有很多数据有问题.于是决定写一个job来将有问题的数据软删除掉.涉及到的两条SQL语句如下: <select id="loadTSKTVBillDai ...
- 关于Domino数据库的软删除
在Domino的数据库属性的 “高级” 附签(选择文件->数据库->属性),选中“允许软删除”,这样我们就启用了软删除功能,当一个文档没有删除的时候我们可以使用NotesDatabase的 ...
- Mysql软删除
所谓软删除(Soft Deleting),即在删除数据表中的数据时,并不直接将其从数据表中删除,而是将其标志为删除,即在每张表中设置一个删除字段(如:IsDeleted)等,默认情况下其值为0,及未删 ...
- 数据的软删除-管理员的CRUD
数据的“软删除”---把数据真正删除在某些时候会有问题.IsDeleted字段,false表示不删除,而是让用户可以看到,true表示是软删除,用户看不到. 一个表引用另外一张表的时候一定要引用主键. ...
- Entity Framework Core 软删除与查询过滤器
本文翻译自<Entity Framework Core: Soft Delete using Query Filters>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 注意 ...
- laravel and lumen 软删除操作
知识都是有联系的,这绝对是真理.作为一名小白,看了一点官方文档,把我自己理解的软删除操作给大家讲讲.有些就是套用官方文档的话. 定义:什么是软删除呢,所谓软删除指的是数据表记录并未真的从数据库删除,而 ...
- LindDotNetCore~ISoftDelete软删除接口
回到目录 概念 ISoftDelete即软删除,数据在进行delete后不会从数据库清除,而只是标记一个状态,在业务范围里都不能获取到这个数据,这在ORM框架里还是比较容易实现的,对传统的ado来说需 ...
随机推荐
- 国内使用kubeadm部署kubernetes的完整流程
使用阿里云的镜像安装kubeadm和kubectl cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Ku ...
- LeetCode题解之Split Linked List in Parts
1.题目描述 2.题目分析 主要是理解题意,将每个子链表应该分得的节点个数计算清楚.利用除数和余数的方法进行计算. 3.代码 vector<ListNode*> splitListToPa ...
- Android Studio之could not reserve enough space for object heap报错
在用AndroidStudio时出现这样的错误: 搞了半天终于找到了解决办法,但是很麻烦.就是每次创建工程后,在gradle.properties文件中加入如下代码: org.gradle.jvma ...
- 从 Azure 下载 Windows VHD
本文介绍如何使用 Azure 门户从 Azure 下载 Windows 虚拟硬盘 (VHD) 文件. Azure 中的虚拟机 (VM) 将磁盘用作存储操作系统.应用程序和数据的位置. 所有 Azure ...
- Solving the SQL Server Multiple Cascade Path Issue with a Trigger (转载)
Problem I am trying to use the ON DELETE CASCADE option when creating a foreign key on my database, ...
- linux开机步骤
linux开机启动步骤: 1.bios自检 2.MBR引导 3.引导系统,进入grub菜单 4.加载内核kernel 5.运行第一个进程init 6.读取/etc/inittab 读取运行级别 7.读 ...
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
前言 由于在开发My Blog项目时使用了大量的技术整合,针对于部分框架的使用和整合的流程没有做详细的介绍和记录,导致有些朋友用起来有些吃力,因此打算在接下来的时间里做一些基础整合的介绍,当然,可能也 ...
- OpenResty 安装配置
0. 说明 1. Windows 下安装 下载软件包 openresty-1.13.6.1-win32.zip ,解压即可食用. [开启] 直接运行 nginx.exe 在 Windows 的命令窗口 ...
- 数值分析 最小二乘 matlab
1. 已知函数在下列各点的值为 -1 -0.75 -0.5 0 0.25 0.5 0.75 1.00 0.8125 0.75 1.00 1.3125 1.75 2.3125 分别用一次.二次. ...
- 1)HDFS分布式文件系统 2)HDFS核心设计 3 )HDFS体系结构
一.HDFS简介 1.HDFS:Hadoop distributed file system 一个分布式文件系统 基于流数据模式访问和处理超大文件的需要而开发 适合应用在大规模数据集上 2. 优点 处 ...