一、开启软删除

模型Models 实体类里 use SoftDeletes;

    class News extends Model    
    {
        public $table = 'news';
        protected $guarded = [];
        
        //开启软删除
        use SoftDeletes;
    }

二、表结构添加deleted_at 字段

delete.png

三、如果不使用withTrashed(),已经进行了软删除的数据就查不出来,因为Laravel默认查询结果会自动剔除已被软删除的结果。

    private function getNews(){    
      //withTrashed 显示所有的,包括已经进行了软删除的
      $data = News::withTrashed()->get();
      return $data;
    }

四、onlyTrashed 只获取已删除的数据

    private function getNews(){    
       //onlyTrashed 只显示软删除的数据
       $data = News::onlyTrashed()->get();
       return $data;
    }

五、delete  或者 destroy 两种方法进行软删除

    private function softDeleteInquiry($id){    
      //delete 软删除
      News::where('id', '=', $id)->delete();
      //destory 软删除
      News::destroy($id);
    }

软删除后,数据库字段 deleted_at 会变更时间,代表已经软删除了

delete.png

六、forceDelete 永久删除数据

    private function forceDelete($id){    
       News::withTrashed()->find($id)->forceDelete();
    }

七、restore 恢复软删除数据

    private function restoreDelete($id){ 
          //恢复一条     
       News::where('id', '=', $id)->restore();
       //全部恢复
       News::withTrashed()->restore();
    }