laravel 软删除 所有方法
一、开启软删除
模型Models 实体类里 use SoftDeletes;
class News extends Model { public $table = 'news'; protected $guarded = []; //开启软删除 use SoftDeletes; }
二、表结构添加deleted_at 字段
三、如果不使用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 会变更时间,代表已经软删除了
六、forceDelete 永久删除数据
private function forceDelete($id){ News::withTrashed()->find($id)->forceDelete(); }
七、restore 恢复软删除数据
private function restoreDelete($id){ //恢复一条 News::where('id', '=', $id)->restore(); //全部恢复 News::withTrashed()->restore(); }