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

用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软删除内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解PHP发送邮件知识点

    发送邮件是网站的常用功能,用户激活.找回密码等场景常需要发送邮件到用户邮箱.本文先回顾发送邮件的相关概念,再给出使用PHP发送邮件的示例代码. 发送短信 从功能上看,短信和邮件类似,用途常是通知和安全校验.发送短信(基本上)需要向供应商付费,所以短信供应商有动力提供清晰的文档,易用的接口方便用户接入.一般而言,发送短信的是: 寻找供应商,例如阿里大鱼.聚合数据等: 注册账户,获取appid和appkey: 申请模板: 查看接口文档,集成到应用中: 调用API发送短信. 流程简单易懂,接入和使用也

  • PHP使用laravel邮件服务发送邮件

    目录 配置 生成 Mailables 编写 Mailables 配置发件人 配置 Laravel 的邮件服务可以通过 config/mail.php 配置文件进行配置. 邮件中的每一项都在配置文件中有单独的配置项,甚至是独有的「传输方式」,允许你的应用使用不同的邮件服务发送邮件 'mailers' => [ 'smtp' => [ 'transport' => 'smtp', 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port

  • PHP Laravel框架缓存操作介绍

    目录 主要的缓存类型(驱动) 设置缓存 获取缓存数据 检查缓存项是否存在 删除缓存数据 缓存辅助函数 Laravel为不同的缓存系统封装了统一的API,缓存配置文件./config/cache.php 主要的缓存类型(驱动) file - 文件,默认使用 memcached - memcached redis - redis database - 数据库 默认laravel支持缓存介质:apc, array, database, file, memcached, redis 在配置文件.env中

  • PHP Laravel门面的实现原理详解

    目录 环境 原理 环境 Laravel 5.4 原理 在Laravel中,门面为应用服务容器中绑定的类提供了一个“静态”接口,使得我们可以不用new这些类出来,就可以直接通过静态接口调用这些类中的方法. 下面我们先看看一个门面类是怎么定义的: <?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class Player extends Facade { protected static function getF

  • PHP Laravel框架异步执行的实现详解

    目录 Laravel 异步执行任务 大致操作 代码粘贴 其他操作 Laravel 异步执行任务 不影响当前程序继续执行 描述:用户操作时 要执行计算量大且不影响主操作的任务时,可采用异步方式执行. 队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和响应的时间 大致操作 生成要执行的文件 php artisan make:job UploadTask .env 中的 QUEUE_CONNECTION=sync 变为 QUEUE_CONNECTION=redis Uplo

  • PHP laravel使用自定义邮件类实现发送邮件

    当登录邮箱为腾讯企业邮箱的时候. Phpmailer发送邮件就不好用了,具体哪里不好用,我没真没找到. 但是,邮件得发啊,怎么办呢? 我这里搞了一个自定义的发送邮件类,腾讯企业邮箱也可用. 但是,邮件发送失败,不会返回报错信息,这个可能是有点坑. 源码如下: <?php   namespace App\Extend; use Exception; /**  * 一个简单的PHP SMTP 发送邮件类  */   class SmtpMail {     /**      * @var strin

  • PHP发送邮件确认验证注册功能示例【修改别人邮件类】

    本文实例讲述了PHP发送邮件确认验证注册功能.分享给大家供大家参考,具体如下: 类库: require "class.phpmailer.php"; require "class.smtp.php"; class PHP_Mailer { protected $mail; public function __construct() { $mail = new PHPMailer; $mail->SMTPDebug = 3; $mail->isSMTP()

  • django之自定义软删除Model的方法

    软删除 简单的说,就是当执行删除操作的时候,不正真执行删除操作,而是在逻辑上删除一条记录.这样做的好处是可以统计数据,可以进行恢复操作等等. 预备知识 Managers Managers 是django models 提供的一个用于提供数据库查询操作的接口,对于Django应用程序中的每个model都会至少存在一个Manager 详细:https://docs.djangoproject.com/en/dev/topics/db/managers/ django实现软删除model firstl

  • jquery 如何动态添加、删除class样式方法介绍

    取与设置样式 获取class和设置class都可以使用attr()方法来完成.例如使用attr()方法来获取p元素的class,JQuery代码如下: 复制代码 代码如下: var p_class = $("p").attr("class"); //获取p元素的class [html] 使用attr()方法来设置p元素的class,JQuery代码如下: [code] 1 $("p").attr("'class", "

  • Laravel 实现数据软删除功能

    对于任何一个模型,如果需要使用软删除功能,需要在模型中使用 Illuminate\Database\Eloquent\SoftDeletes 这个  trait .软删除功能需要实现的功能有以下几点: 1.模型执行删除操作,只标记删除,不执行真正的数据删除 2.查询的时候自动过滤已经标记为删除的数据 3.可以设置是否查询已删除的数据,可以设置只查询已删除的数据 4.已删除数据可以恢复 Model的软删除功能实现 Illuminate\Database\Eloquent\Model 中delete

  • mybatis plus CU自动填充 和 软删除自动填充的实现方法

    说明 CU 是 CRUD 中的创建和修改 本文实现以下需求效果 创建数据时自动填充 createTime 更新数据时自动填充 updateTime(每次修改都自动填充新的 updateTime 值) 软删除数据时自动填充 deleteUserId 和 deleteTime 创建 实体类 为实体类(DO)的 createTime 字段配置以下 Annotation,代表标记在插入(insert into)时自动填充字段值 @TableField(fill = FieldFill.INSERT) p

  • hadoop动态增加和删除节点方法介绍

    上一篇文章中我们介绍了Hadoop编程基于MR程序实现倒排索引示例的有关内容,这里我们看看如何在Hadoop中动态地增加和删除节点(DataNode). 假设集群操作系统均为:CentOS 6.7 x64 Hadoop版本为:2.6.3 一.动态增加DataNode 1.准备新的DataNode节点机器,配置SSH互信,可以直接复制已有DataNode中.ssh目录中的authorized_keys和id_rsa 2.复制Hadoop运行目录.hdfs目录及tmp目录至新的DataNode 3.

  • MySQL删除有外键约束的表数据方法介绍

    在MySQL中删除一张表或一条数据的时候,出现 [Err] 1451 -Cannot deleteorupdatea parent row: aforeignkeyconstraintfails (...) 这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据.可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况. 禁用外键约束,我们可以使用: SETFOREIGN_KEY_CHECKS=0; 然后再删除数据 启动外键约束,我们可以使用: SETFOREIG

  • Laravel 模型使用软删除-左连接查询-表起别名示例

    事情是这样的,有天写了一个左连接查询,由于表名太长,所以分别给起个别名,代码如下: public function detail() { $result = TakeOrderModel::query() ->from('take_order as order') ->leftJoin('take_order_detail as detail', 'order.id', '=', 'detail.take_order_id') ->get(); dd($result); } 执行后,报错

  • PHP字符串前后字符或空格删除方法介绍

    目录 rtrim() ltrim() trim() 总结 首先看一下这三个函数:rtrim() ltrim() trim(): rtrim() 定义以及用法: rtrim() 函数移除字符串右侧的空白字符或其他预定义字符. 语法: rtrim(string,charlist) 参数 描述 string 必需.规定要检查的字符串. charlist 可选.规定从字符串中删除哪些字符.如果省略该参数,则移除下列所有字符:"\0" - NULL "\t" - 制表符 &q

  • centos中yum命令删除还原的补救方法介绍

    前言 yum,是Yellow dog Updater Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke开发团队进行改进,遂有此名.yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相 关信息,检查依赖性并自动提示用户解决.yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点,

  • Laravel 的数据库迁移的方法

    本文介绍了Laravel 的数据库迁移的方法,分享给大家,具体如下: 生成迁移 --table 和 --create 选项可用来指定数据表的名称,或是该迁移被执行时会创建的新数据表.这些选项需在预生成迁移文件时填入指定的数据表: php artisan make:migration create_users_table php artisan make:migration create_users_table --create=users php artisan make:migration a

随机推荐