Laravel - 软删除 - 将帖子移动到其他表格

时间:2016-12-29 14:17:03

标签: laravel mariadb delete-row

是否可以使用Laravel,它可以在其他相同的日志表中包含软删除的项目? 其他表中的所有软删除文件。

我希望在日志表上创建事件调度程序(http://dev.mysql.com/doc/refman/5.6/en/events-overview.html)以在一段时间后删除所有数据。

1 个答案:

答案 0 :(得分:3)

完成此任务的几种不同方法。如果要将已删除的项目插入另一个表格,请在要删除事件时要对此操作进行的模型上注册model listener

MyModel::deleting(function($model) {
    DeletedItems::create([
        // Your model fields here
    ]);
});

- 或 -

如果您想在软件删除后的一段时间内删除数据库中的项目,我建议您使用Scheduled Task。由于软删除为您提供了时间戳,您可以在任务中引用它。

例如,以下内容将删除所有已被软删除超过一个月的模型:

protected function schedule(Schedule $schedule)
{
    $schedule->call(function () {
        MyModel::withTrashed()
            ->whereDate('deleted_at', '<', Carbon::today()->subMonth())
            ->forceDelete();
    })->daily();
}