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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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