Ufak bir tavsiye vereyim bununla ilgili,

1 Tane tablo oluştur TrashTable diye;
- TrashID => int(11)
- TableName => varchar(255)
- TrashData => json
- DeleteAdminID => int(11)
- DeleteDate => now()
- Status => tinyint(1)

1 tane fonksiyon oluştur misal;
(Bu fonksiyon her tablodan veri sildiğinizde kullanabilirsiniz ve istediğiniz zaman tekrar tabloya aynı şekilde koyabilirsiniz. TrashData içerisinde direk o satırı alıp json olarak koyuyoruz.)
public static function deleteData($identityColumn,$identityID,$tableName){
  // misal laravel db builder kullanıyoruz diyelim
  $getData = DB::table($tableName)
  ->select("*")
  ->where($identityColumn,"=",$identityID)
  ->first();

  if($getData != false){
    DB::beginTransaction();
    try{
      DB::table("TrashTable")
      ->insert(array(
        "TableName"=>$tableName,
        "TrashData"=>json_encode($getData,JSON_UNESCAPED_UNICODE)
        "DeleteAdminID"=>session('adminID')
      ));

      DB::table($tableName)
      ->where($identityColumn,"=",$identityID)
      ->delete();

      DB::commit();
      return true;
    }catch(Exception $e){
      DB::rollBack();
      return $e;
    }
  }else{
    return false;
  }
}