2017-08-09 10 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

使用しているデータベースによっては、datetimeとtimestampの列の種類によって異なることがあります。

たとえば、MariaDB/MySQLでは、datetimeは、日付と時刻を特定の形式で保持する単なる列型です。

timestampカラムタイプには日付と時刻も含まれますが、明示的にオーバーライドされない限り、レコードが追加/更新されると自動的に更新されます。 MariaDBドキュメントから

:レコードが挿入されたときにタイムスタンプフィールドは、一般的に行が追加または更新された時間のどの瞬間に、デフォルトで定義するために使用される

は、自動的に現在の日時が割り当てられますまたは更新しました。

関連する問題