知识都是有联系的,这绝对是真理。作为一名小白,看了一点官方文档,把我自己理解的软删除操作给大家讲讲。有些就是套用官方文档的话。

定义:什么是软删除呢,所谓软删除指的是数据表记录并未真的从数据库删除,而是将表记录的标识状态标记为软删除,这样在查询的时候就可以加以过滤,让对应表记录看上去是被”删除“了。

通俗易懂说法:数据库的表中使用了一个日期字段作为标识状态,这个日期字段可以自定义,这里我们使用deleted_at,如果对应模型被软删除,则该条记录的deleted_at字段的值为删除时间,否则该值为空。

开始操作:

我选择使用laravel 做示例,因为lumen的artisan命令太少。主要是原理!!!

添加model文件,并创建blog_users表.

运行如下命令:

php artisan make:model blogUser --migration

  

现在,已经生成了model文件,还有迁移文件。

我们用命令生成数据表,如下:

 php artisan migrate

   

现在还差一个字段,就是deleted_at字段。继续命令,

php artisan make:migration alter_posts_deleted_at --table=blog_users

然后编辑生成的PHP文件如下:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; class AlterPostsDeletedAt extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('blog_users', function (Blueprint $table) {
//我新加部分如下一行
$table->softDeletes();
});
} /**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('blog_users', function (Blueprint $table) {
//
});
}
}

记得在migrations 文件夹中,把生成表的那个文件删掉,在继续执行如下命令,

php artisan migrate

  

你看deleted_at字段出来了吧。

好了,我要写代码了,不命令行了,哈哈哈。

在blogUser文件中,引用软删除,并配置。
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; class blogUser extends Model
{
//使用软删除
use SoftDeletes;
//设置表名
public $table = 'blog_users';
//设置主键
public $primaryKey = 'id';
protected $dates = ['deleted_at'];
}

 现在,我们去控制器中吧,看看软删除好了没。 

<?php

namespace App\Http\Controllers;
use App\blogUser; class BlogUsedController extends Controller
{
public function softdel(){
$post = blogUser::find(1);
$post->delete();
if($post->trashed()){
echo '软删除成功!';
dd($post);
}else{
echo '软删除失败!';
}
}
}

  执行结果:

lumen 也是这个原理,到时候,你数据表就手动创建,别用命令生成。model代码与控制器代码是主要的。

结束了,大功告成,如有不理解地方,请评论留言。

laravel and lumen 软删除操作的更多相关文章

  1. Laravel 查询包括软删除的记录

    查询结果包括已被软删除的记录: Model::withTrashed()->get(); 只查询软删除记录: Model::onlyTrashed()->get(); PS:个人博客-La ...

  2. Laravel设置软删除及其恢复系列操作

    软删除及其相关实现 在模型类中要使用SoftDeletestrait并设置$date属性数组 <?php namespace App\Models; use Illuminate\Databas ...

  3. laravel文件存储、删除、移动等操作

    laravel文件存储.删除.移动等操作 一.总结 一句话总结: 启示:可以在操作遇到问题的时候,找文档找实例好好实验一下,也就是学习巩固一下,不必一定要死纠排错 1.laravel文件删除注意? 1 ...

  4. laravel框架总结(九) -- 软删除

    当模型被软删除时,它们并不会真的从数据库中被移除.而是会在模型上设置一个 deleted_at 属性并将其添加到数据库.如果对应模型被软删除,则deleted_at字段的值为删除时间,否则该值为空. ...

  5. 软删除脏数据job笔记

    某次处理一个case,发现线上库里有很多数据有问题.于是决定写一个job来将有问题的数据软删除掉.涉及到的两条SQL语句如下: <select id="loadTSKTVBillDai ...

  6. 关于Domino数据库的软删除

    在Domino的数据库属性的 “高级” 附签(选择文件->数据库->属性),选中“允许软删除”,这样我们就启用了软删除功能,当一个文档没有删除的时候我们可以使用NotesDatabase的 ...

  7. Yii2 软删除

    什么是软删除 后台操作,删除一条记录,不希望真正的从数据库中删除,用个字段标记一下.比如delete_at.默认0.当执行删除操作,更新delete_at为当前时间戳 这样列表显示的时候只查询dele ...

  8. django之自定义软删除Model

    软删除 简单的说,就是当执行删除操作的时候,不正真执行删除操作,而是在逻辑上删除一条记录.这样做的好处是可以统计数据,可以进行恢复操作等等. 预备知识 Managers Managers 是djang ...

  9. Laravel5.1 模型 --软删除

    软删除是比较实用的一种删除手段,比如说 你有一本账 有一笔记录你觉得不对给删了 过了几天发现不应该删除,这时候软删除的目的就实现了 你可以找到已经被删除的数据进行操作 可以是还原也可以是真正的删除. ...

随机推荐

  1. 《java.util.concurrent 包源码阅读》05 BlockingQueue

    想必大家都很熟悉生产者-消费者队列,生产者负责添加元素到队列,如果队列已满则会进入阻塞状态直到有消费者拿走元素.相反,消费者负责从队列中拿走元素,如果队列为空则会进入阻塞状态直到有生产者添加元素到队列 ...

  2. 七、Hadoop学习笔记————调优之Hadoop参数调优

    dfs.datanode.handler.count默认为3,大集群可以调整为10 传统MapReduce和yarn对比 如果服务器物理内存128G,则容器内存建议为100比较合理 配置总量时考虑系统 ...

  3. 工厂模式(Factory Method)

    1.工厂方法模式(Factory Method) 工厂方法模式分为三种: 1-1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 举例如下:(我们举一个发送邮件和短信的例子 ...

  4. MYSQL瓶颈

    一般来说, 在使用的时候 性能从某个数值开始.突然大大下降,说明就到了瓶颈期. mysql 瓶颈有2种,一种是 cpu瓶颈  一种是 io瓶颈.cpu瓶颈多是由io引起. 而io可以通过  show ...

  5. 整理下git常用命令

    Git工作示意图 一.新建代码库 ::在当前目录新建一个Git代码库git init::新建一个目录,将其初始化为Git代码库git init [project-name]::下载一个项目和它的整个代 ...

  6. 实战-Mysql5.6.36脚本编译安装及初始化

    概述 本文为centos7.3自动化编译安装mysql5.3.6的脚本及后续初始化操作,话不多少,直接上脚本. 安装脚本install.py如下: #coding=utf-8 #!/usr/bin/p ...

  7. pymysql实现MySQL与Python交互

    常见MySQL操作 所需模块: pip3 install pymysql 查询(fetchone,fetchmany,fetchall): import pymysql #连接 con = pymys ...

  8. python :ascii codec can't decode byte 0xe8 in posit

    python代码: slide.setAttribute("SlideName", module.slide_name)  slide.setAttribute("Sli ...

  9. Shell中处理方法返回值问题

    同步发表:http://blog.hacktons.cn/2017/12/13/shell-func-return/ 背景 通过shell编程,写一些工具批处理的时候,经常需要自定义函数.更复杂点的情 ...

  10. oracle恢复已删除的表

    drop 误删除表之后使用flashback table tablename to before drop 可恢复或者使用flashback table "BIN$gcfME7ObTx+n0 ...