• 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


  • 相关阅读:
    Tomcat建立多个应用(Web Server),多个主机,多个站点的方法
    Spring 注解bean默认名称规则
    spring+springMVC,声明式事务失效,原因以及解决办法
    Spring事务失效的原因
    MySQL 对于千万级的大表要怎么优化?
    前端开发利器: Bootstrap + AngularJS
    scrapy爬取段子
    scrapy安装
    xpath和CSS选择器
    pycharm远程登录mysql
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453437.html
Copyright © 2020-2023  润新知