zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    【MVC】过滤器
    【C#】开发可以可视化操作的windows服务
    【JS】导出table到excel,同时兼容FF和IE
    【.Net】文件并发(日志处理)--队列--Redis+Log4Net
    【.Net】从.NET平台调用Win32 API
    『录』最全前端资源汇集
    $.ajax()方法详解
    mvc的视图中显示DataTable的方法
    C# 对XML基本操作总结
    Ninject简介
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453437.html
Copyright © 2011-2022 走看看