美文网首页
Laravel设置软删除及其恢复系列操作

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

作者: 老王谈编程 | 来源:发表于2017-11-23 21:28 被阅读0次

    软删除及其相关实现

    • 在模型类中要使用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();
    

    相关文章

      网友评论

          本文标题:Laravel设置软删除及其恢复系列操作

          本文链接:https://www.haomeiwen.com/subject/ldetbxtx.html