PHP Laravel软删除的实现方法介绍

 更新时间:2022年09月02日 14:44:51   作者:PeakXin  
软删除就是逻辑删除,数据保留单标记上删除状态,一般我们会用删除时间来作为标记,这样标记状态有了,删除时间也有了

用Laravel 自带的 Eloquent ORM 来实现软删除。

首先在数据迁移文件中添加删除时间字段

./database/migrations/2014_10_12_000000_create_users_table.php

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
            $table->softDeletes()->comment('删除时间');// 默认添加 deleted_at 字段
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
};

执行 php artisan migrate 运行迁移文件

修改对应的数据模型

./app/Models/User.php

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    use SoftDeletes;// 开启软删除
    protected $guarded = [];// 不可以注入的字段数据,使用create方法才有效
}

软删除方法

直接调用delete()方法或者destroy()方法即可

User::destroy($id);

这时候查询的数据自动添加过滤条件 deleted_at = NULL

恢复删除

User::onlyTrashed()->where('id', $id)->restore();

永久删除

直接删除数据

User::forceDeleted($id);

查询包含已删除的数据

使用 withTrashed()可以查询出包含已删除的数据

User::withTrashed()->get();

只查询已删除的数据

使用 onlyTrashed()可以只查询出已删除的数据

User::onlyTrashed()->get();

到此这篇关于PHP Laravel软删除的实现方法介绍的文章就介绍到这了,更多相关PHP Laravel软删除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PHPExcel内存泄漏问题解决方法

    PHPExcel内存泄漏问题解决方法

    这篇文章主要介绍了PHPExcel内存泄漏问题解决方法,本文先是讲解了造成内存泄漏的原因,然后给出了解决方法,需要的朋友可以参考下
    2015-01-01
  • PHP goto语句简介和使用实例

    PHP goto语句简介和使用实例

    这篇文章主要介绍了什么是PHP goto语句和goto操作符的使用实例,需要的朋友可以参考下
    2014-03-03
  • php写入文件不覆盖的实例讲解

    php写入文件不覆盖的实例讲解

    在本篇文章里小编给大家分享关于php写入文件不覆盖的实例讲解以及知识点总结,需要的可以参考下。
    2019-09-09
  • PHP中for循环与foreach的区别

    PHP中for循环与foreach的区别

    本文主要介绍了php中for循环与foreach的区别,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • php实现的生成排列算法示例

    php实现的生成排列算法示例

    这篇文章主要介绍了php实现的生成排列算法,结合实例形式分析了php基于递归、遍历字符串实现全排列相关算法实现技巧,需要的朋友可以参考下
    2019-07-07
  • PHP高并发和大流量解决方案整理

    PHP高并发和大流量解决方案整理

    在本篇文章里小编给大家分享的是一篇关于PHP高并发和大流量解决方案内容,有兴趣的朋友们可以参考下。
    2019-12-12
  • php分页查询mysql结果的base64处理方法示例

    php分页查询mysql结果的base64处理方法示例

    这篇文章主要介绍了php分页查询mysql结果的base64处理方法,涉及php+mysql数据库查询及base64编码转换相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • 改写函数实现PHP二维/三维数组转字符串

    改写函数实现PHP二维/三维数组转字符串

    将多维数组中所有的数值转换成字符串最多支持三维数组,在给定的示例函数基础上改写出了的,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-09-09
  • php事务处理实例详解

    php事务处理实例详解

    这篇文章主要介绍了php事务处理实例详解,需要的朋友可以参考下
    2014-07-07
  • PHP获取星期几的常用方法小结

    PHP获取星期几的常用方法小结

    这篇文章主要介绍了PHP获取星期几的常用方法,结合实例形式分析了php使用date函数获取指定日期星期几的具体操作技巧与相关注意事项,需要的朋友可以参考下
    2018-12-12

最新评论