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

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

软删除及其相关实现

  • 在模型类中要使用SoftDeletestrait并设置$date属性数组
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Student extends Model
{
    use SoftDeletes;

    //设置表名
    public $table = 'students';

    //设置主键
    public $primaryKey = 'id';

    protected $dates = ['delete_at'];
}

  • 数据迁移中软删除字段写法
<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AlterStudentsDeletedAt extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('students', function (Blueprint $table) {
            $table->timestamps();
            $table->softDeletes();
        });
    }
}

  • 控制器中使用
public function destroy(Student $student)
{
    $student->delete();
    if (!$student->trashed()) {
        return redirect()->back()->with('danger', '学生信息删除失败,学生ID:'.$student->id);
    }

    return redirect()->route('students.index')->with('success', '学生信息删除成功,学生ID:'.$student->id);
}

  • 查询结果包含软删除模型
$students = Student::withTrashed()->get();
dd($students->toArray());

  • 只要查看被软删除的模型
$students = Student::onlyTrashed()->get();
dd($students->toArray());

  • 软删除恢复
$student = Student::find(6);
$student->restore();

  • 恢复多个模型
Student::withTrashed()->where('id','>',1)->restore();

  • 恢复所有模型
Student::withTrashed()->restore();

  • 恢复关联查询模型
$student = Student::find(6);
$student->history()->restore();

  • 强制删除(丛数据库中删除)
$student = Student::find(6);
$student->forceDelete();

链接:https://www.jianshu.com/p/a48fb2b6adfa

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112393.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【11】进大厂必须掌握的面试题-持续集成面试

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 Q1。持续集成是什么意思? 我将建议您通过对持续集成(CI)进行小的定义来开始此答案。这是一种开发实践,要求开发人员…

    2021年6月23日
    122
  • Qt面试题(二)

    Qt面试题(二)QT理论试题1以下关于QT的描述正确的是a.是一个不跨平台的C++图形用户界面b.由挪威TrollTech公司出品c.只支持Unix、Linuxd.QTAPI和开发工具对所支持的平台是不一致的2以下关于QT的描述不正确的是a.QT支持2D图形渲染b.QT支持3D图形渲染c.QT支持OpenGL d.QT不支持XML…

    2022年6月25日
    34
  • vue常用组件库_vue内置组件

    vue常用组件库_vue内置组件目录前言一、Vue.jsUI组件二、Vue.js开发框架三、Vue.js实用库四、Vue.js服务端五、Vue.js辅助工具六、Vue.js应用实例七、Vue.jsDemo示例八、详细分类01、UI组件及框架02、滚动scroll组件03、slider组件04、编辑器05、图表06、日历07、地址选择08、地图09、播放器10、文件上传11、图片处理12、提示13、进度条14、开发框架汇总15、实用库汇总

    2025年5月26日
    0
  • python中sqrt的用法_Python中sqrt函数怎么用「建议收藏」

    python中sqrt的用法_Python中sqrt函数怎么用「建议收藏」Python中sqrt函数怎么用?下面给大家带来sqrt函数的相关介绍:Python数字sqrt()函数返回x的平方根(x>0)。语法以下是sqrt()方法的语法-importmathmath.sqrt(x)注意-此函数不可直接访问,需要导入math模块,然后需要使用math静态对象调用此函数。参数x-这是一个数字表达式。返回值该方法返回x的平方根(x>0)。sqrt()…

    2022年6月5日
    69
  • 微信小程序抢票脚本怎么写_小程序抢票脚本

    微信小程序抢票脚本怎么写_小程序抢票脚本小程序抢票脚本@TOC微信小程序抢票脚本所使用的模块:request和re工具:pycharm和fiddler1.首先通过fiddler工具抓取到请求和参数选择场地信息url信息付款url信息2.代码部分,编写脚本选场地//选场地changdi_url=”https://sapb.szosc.cn/index.php/wxplace/place/pay”date={‘price’:’30’,’fieldtype’:”,

    2022年9月15日
    1
  • nginx安装与fastdfs配置–阿里云

    nginx安装与fastdfs配置–阿里云

    2021年6月18日
    118

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号