Несколько различных способов достичь этого. Если вы хотите, чтобы вставить удаленные элементы в другую таблицу, то зарегистрировать 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();
}
Laravel не может сделать это из коробки, но она не может быть трудно написать это сам. – Jerodev