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

 

1.做一些设置

  首先在模型类中要使用SoftDeletestrait,该trait为软删除提供一系列相关方法,具体可参考源码Illuminate\Database\Eloquent\SoftDeletes,此外还要设置$date属性数组,将deleted_at置于其中:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Post extends Model { use SoftDeletes; //...其他一些设置 protected $dates = ['delete_at']; } 

2.向数据库中的相应数据表添加delete_at字段

  1>这里我们使用数据迁移来实现
  php artisan make:migration alter_posts_deleted_at --table=posts
 
  2>此时在database/migrations文件夹下会生成一个相应文件,更改如下
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class AlterPostsDeletedAt extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('posts', function (Blueprint $table) { $table->softDeletes(); }); } ...//其它方法 } 

  3>再次运行命令 php artisan migrate ,发现数据库相应的数据表中已经有delete_at字段了
 

3.使用方法

  在模型上调用 delete 方法时,deleted_at 字段将会被设置成目前的日期和时间。而且,当查找有启用软删除的模型时,被软删除的模型将会自动从所有查找结果中排除。
  //在模型上调用delete方法$post = Post::find(6); $post->delete();   //要确认指定的模型实例是否已经被软删除,可以使用 trashed 方法:      if($post->trashed()){     echo '软删除成功!';     dd($post);   }else{     echo '软删除失败!';   }   //查找被软删除的模型   $flights = App\Flight::withTrashed() ->where('account_id', 1) ->get();   //onlyTrashed 方法会只获取已被软删除的模型:   $flights = App\Flight::onlyTrashed() ->where('airline_id', 1) ->get();   //恢复单个已经被软删除的模型   $flight = Flight::withTrashed()-find(1); //这里要注意如果被软删除直接find是查不到的   $flight->restore();   //恢复多个模型   App\Flight::withTrashed() ->where('airline_id', 1) ->restore();   // 强制删除单个模型实例...   $flight->forceDelete();   // 强制删除所有相关模型...   $flight->history()->forceDelete();

转载于:https://www.cnblogs.com/ghjbk/p/6638125.html

laravel框架总结(九) -- 软删除相关推荐

  1. 十九、PHP框架Laravel学习笔记——批量赋值和软删除

    一.批量赋值 上一节增删改中,新增中我们发现需要进行批量赋值的许可: 一般情况下,是为了防止提交过来的字段在部分场景中不需要或不能: 所以,我们需要通过黑白名单机制进行过滤掉必要的字段: //通过提交 ...

  2. laravel自定义软删除

    laravel框架自带的字段为deleted_at, 但是我们现在的要求是改成is_delete 0=未删除,1=删除 这样问题就来了.deleted_at为时间戳格式.而我们的is_delete,直 ...

  3. 数据库软删除php,应用 Laravel 的软删除你需要注意的几点

    Laravel 软删除存在的问题 1.软删除使用的标记类型是时间类型,通过is null条件查询,删除标记取值不支持定义 //Illuminate\Database\Eloquent\SoftDele ...

  4. lumen php命令,laravel and lumen 软删除操作

    知识都是有联系的,这绝对是真理.作为一名小白,看了一点官方文档,把我自己理解的软删除操作给大家讲讲.有些就是套用官方文档的话. 定义:什么是软删除呢,所谓软删除指的是数据表记录并未真的从数据库删除,而 ...

  5. Laravel实现软删除

    Laravel实现软删除 Laravel 的 Eloquent ORM 提供了一个漂亮.简洁的 ActiveRecord 实现来和数据库交互.每个数据库表都有一个对应的「模型」用来与该表交互.你可以通 ...

  6. Laravel Eloquent ORM 实例教程 —— 模型删除及软删除相关实现

    1.删除模型 1.1 使用delete删除模型 删除模型很简单,先获取要删除的模型实例,然后调用delete方法即可: $post = Post::find(5); if($post->dele ...

  7. Laravel框架一:原理机制篇

    转载自http://www.cnblogs.com/XiongMaoMengNan/p/6644892.html Laravel作为在国内国外都颇为流行的PHP框架,风格优雅,其拥有自己的一些特点. ...

  8. laravel框架应用和composer扩展包开发

    laravel5.5+ laravel官方地址 laravel是目前最流行的php框架,发展势头迅猛,应用非常广泛,有丰富的扩展包可以应付你能想到的各种应用场景,laravel框架思想前卫,跟随时代潮 ...

  9. laravel框架详解 学以致用

    系列文章目录 提示: laravel介绍.文件配置.路由使用 .控制器的使用 . 数据的操作.@csrf防护.文件上传 文章目录 系列文章目录 laravel框架 详解一些功能 学以致用 一.lara ...

最新文章

  1. mysql 5.7 gtid 主从_MySQL 5.7基于GTID的主从复制实践
  2. freemarker入门实例与源码研究准备工作
  3. 在spring中使用自定义注解注册监听器
  4. 数据可视化(二)Matplotlib pandas简易入门
  5. ElementUI+VUE 日期控件禁用用法
  6. python数据序列题库_Python题库系列分享一(17道)
  7. 索尼Xperia 2带壳渲染图曝光:外形依然很索尼
  8. w ndows SE,2017《wndows可视化编程》在线作业附答案.docx
  9. 使用Python,OpenCV旋转图像任意角度(完整和局部丢失~)
  10. 5G简介【华为ICT学堂】笔记
  11. 限流算法: 漏桶算法和令牌桶算法
  12. 磁珠法RNA pull down试剂盒、蛋白质-核酸相互作用
  13. 前端面试经典题目合集--77题
  14. 【渝粤教育】广东开放大学 工程经济 形成性考核
  15. matlab音乐键盘模拟,科学网—[原][Matlab][04] Midi音乐键盘 - 王楠的博文
  16. Android压缩图片和libjpeg库
  17. 模拟光源 html5,光照渲染——用canvas模拟光照效果
  18. 开源配置管理系统的选择和搭建
  19. 深度学习:权重衰减(weight decay)与学习率衰减(learning rate decay)
  20. 细说嵌入式系统下的驱动程序设计

热门文章

  1. 生产人员计件扫码系统
  2. 种草3亿人的小红书,这次给你种草腾讯云星星海SA2云服务器
  3. 曾国藩致沅弟(咸丰八年正月十四日)--脚踏实地克勤小物
  4. 前端面试:被问到BFC,要这样答才能满分
  5. 理化所合作研发出世界首个自主运动的可变形液态金属机器
  6. 软件工程概论总结及其对建民欧巴的评价和建议
  7. 练练脑子(1)- 四马换位
  8. 鄂尔多斯准旗黄河捞鱼溺水事件后……
  9. Collection类之详解(一)
  10. 微型计算机显示性能最好的是,【黑龙江省中小学教师信息技术考试(五)】黑龙江省中小学正高级教师...