2016-12-15 9 views
1

expired(boolean)expire_date(timestamp)という表に2つの列があります。 foreachを使用してexpired列の値を更新している間に、クーポンが期限切れになっているかどうかを確認するためにスケジューラを実行していますが、私は今日のexpired_date列の値を変更しています。私はlaravel eloquent query builderロジックなしのカスタムタイムスタンプフィールドの更新

enter image description here

を更新する前に

DB、ここにコード

$schedule->call(function() { 
      CoursePromotion::where('expired',0) 
       ->whereDate('expire_date','<',Carbon::today()) 
       ->update(['expired' => 1]); 
     })->everyMinute(); 

ここでは結果であります。..これは奇妙な発見や、私が参照の事でパスをめちゃくちゃにしていかもしれ

php artisan schedule:runコマンド実行後のDB

enter image description here

誰でも私にexpired_dateが今日の日付に更新された理由を教えてもらえますか?

+0

Carbon :: today()ではなく、Carbon :: now()を使用します.2番目の方法は実際の時刻ではなく日付を返します。 – Vuldo

答えて

1

データベーステーブルを確認してください(この 'expired_date'列を持つ)が、同じ列の属性を使用しているかどうかはわかりません。 'expired_date'の列に「on update CURRENT_TIMESTAMP」のような属性が見つかった場合は、それを削除してチェックしてください。

enter image description here

更新アクションは、特定のレコード(複数可)に対して実行しながら、さらにこの「on update CURRENT_TIMESTAMP」属性は、上の電流での日付を更新します。

関連する問題