软删除及其相关实现
- 在模型类中要使用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
评论(0)