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

举报
lxw1844912514 发表于 2022/03/27 02:23:33 2022/03/27
【摘要】 软删除及其相关实现 在模型类中要使用SoftDeletestrait并设置$date属性数组 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model;use Illuminate\Database\Elo...

软删除及其相关实现

  • 在模型类中要使用SoftDeletestrait并设置$date属性数组

      
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Database\Eloquent\SoftDeletes;
  5. class Student extends Model
  6. {
  7. use SoftDeletes;
  8. //设置表名
  9. public $table = 'students';
  10. //设置主键
  11. public $primaryKey = 'id';
  12. protected $dates = ['delete_at'];
  13. }
  • 数据迁移中软删除字段写法

      
  1. <?php
  2. use Illuminate\Database\Schema\Blueprint;
  3. use Illuminate\Database\Migrations\Migration;
  4. class AlterStudentsDeletedAt extends Migration
  5. {
  6. /**
  7. * Run the migrations.
  8. *
  9. * @return void
  10. */
  11. public function up()
  12. {
  13. Schema::table('students', function (Blueprint $table) {
  14. $table->timestamps();
  15. $table->softDeletes();
  16. });
  17. }
  18. }
  • 控制器中使用

      
  1. public function destroy(Student $student)
  2. {
  3. $student->delete();
  4. if (!$student->trashed()) {
  5. return redirect()->back()->with('danger', '学生信息删除失败,学生ID:'.$student->id);
  6. }
  7. return redirect()->route('students.index')->with('success', '学生信息删除成功,学生ID:'.$student->id);
  8. }
  • 查询结果包含软删除模型

      
  1. $students = Student::withTrashed()->get();
  2. dd($students->toArray());
  • 只要查看被软删除的模型

      
  1. $students = Student::onlyTrashed()->get();
  2. dd($students->toArray());
  • 软删除恢复

      
  1. $student = Student::find(6);
  2. $student->restore();
  • 恢复多个模型
Student::withTrashed()->where('id','>',1)->restore();
  • 恢复所有模型
Student::withTrashed()->restore();

     
  • 恢复关联查询模型

      
  1. $student = Student::find(6);
  2. $student->history()->restore();
  • 强制删除(丛数据库中删除)

      
  1. $student = Student::find(6);
  2. $student->forceDelete();

链接:https://www.jianshu.com/p/a48fb2b6adfa


文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/lxw1844912514/article/details/100027845

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。