2017-08-09 47 views
0

我正在使用Laravel軟刪除以便「刪除」一條記錄。但奇怪的是發生了什麼,用於軟刪除記錄的delete()命令顯然會影響表中其他時間戳記行,除非我錯過了某些關鍵事項。Laravel`delete()`影響其他時間戳列

我的模型(只有相關的部分包括,命名空間都已經被正確包括):

use SoftDeletes; 
protected $fillable = [ 'card_id', 'expiry_date' ]; // where expiry_date is the timestamp row being affected. 
protected $hidden = ['created_at', 'updated_at', 'deleted_at']; 

我的控制器

public function destroy(IdCardFormRequest $request, $id) 
{ 
    $idCard = IdCard::find($id); 
    if(isset($idCard)){ 

     $operationStatus = $idCard ->delete(); 

     if($operationStatus) { 
      $request->session()->flash('status', 'success'); 
      $request->session()->flash('message', 'Id card deleted successfully'); 
      return redirect()->route('admin.id-card.index'); 
     } 
    } 
} 

的問題
當我啓動刪除過程使用適當的路由MySql數據行是軟刪除d,但是其他基於時間戳的行,即expiry_date被更新爲當前時間戳。我已閱讀了Laravel有關軟刪除的整個文檔,並沒有提及其他時間戳列會受到影響。

The documentation I've read


編輯:
嗯,我一直在使用的dateTime()代替timestamp()解決它。我仍然不確定這是一個合適的解決方案

回答

2

根據您使用的數據庫,日期時間和時間戳列的類型可能會做不同的事情。

在MariaDB/MySQL中,例如,datetime只是一種以特定格式保存日期和時間的列類型。

timestamp列類型也包含日期和時間,但會在記錄添加/更新時自動更新,除非明確覆蓋。

從MariaDB的文檔:

時間戳字段通常被用於定義在該時刻在一排中加入或更新,並且默認將自動當記錄被插入或者所分配的當前的日期時間的時間更新。