2016-12-15 4 views
1

expired(boolean)expire_date(timestamp) 테이블에 두 개의 열이 있습니다. foreach를 사용하여 expired 열 값을 업데이트하는 동안 쿠폰이 만료되었는지 확인하려면 스케줄러를 실행하고 있습니다. 만료 날짜 _ 날짜 열 값을 오늘 날짜로 변경한다는 사실을 발견했습니다. 나는이 이상한 발견 아니면laravel eloquent query builder 로직없이 사용자 정의 타임 스탬프 필드 업데이트하기

enter image description here

를 업데이트하기 전에 여기
$schedule->call(function() { 
      CoursePromotion::where('expired',0) 
       ->whereDate('expire_date','<',Carbon::today()) 
       ->update(['expired' => 1]); 
     })->everyMinute(); 

이 결과 코드,

DB에게 .. 여기 참조 점으로 패스되어 엉망으로하고있다 할 수있다

php artisan schedule:run 명령 실행 후 DB

enter image description here

누구든지 만료 날짜가 오늘 날짜로 업데이트 된 이유를 알 수 있습니까?

+0

'Carbon :: today()'가 아닌'Carbon :: now()'를 사용하십시오. 두 번째 것은 실제 시간이 아닌 날짜를 반환합니다. – Vuldo

답변

1

데이터베이스 테이블을 확인하십시오 (이 'expired_date'열이 있음). 확실하지는 않지만 동일한 열에 대한 속성으로 문제를 확인하십시오. 'expired_date'열에 'on update CURRENT_TIMESTAMP'과 같은 속성이 있으면 제거하고 확인하십시오. 업데이트 작업이 특정 레코드 (들)에 대한 수행하면서

enter image description here

또한이 'on update CURRENT_TIMESTAMP'속성은 현재와 날짜에 업데이트됩니다.