2016-12-29 55 views

回答

2

幾種不同的方法來實現這一點。如果你想刪除的內容插入到另一個表然後註冊你想這個動作發生有關刪除事件的機型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(); 
} 
+0

第二種解決方案似乎非常好,但出於某種統計目的,移至其他數據庫也可以。只需從首先刪除並將數據放入統計頁面即可。第一個解決方案對於我正在考慮的日誌來說似乎很不錯。 – Maximi

+0

爲什麼不做兩個?在任務中創建邏輯,以便將要刪除的記錄先插入另一個表中,然後將其刪除,而不是模型觀察者。 –