2017-10-14 138 views
0

越來越日期這是我ReservationController裏面的功能:比較和Laravel雄辯結果

public function realtime() { 
    // Change to On Going 
    $ongoing = Reservation::select('*') 
          -> where('eventStatus', 'NYD') -> get(); 
    //dd($ongoing); 
    foreach ($ongoing as $og) { 
     echo "Started For Each\n"; 
     //dd($og); 

     if ($og -> reservationStart > Carbon::now() && 
      $og -> reservationEnd < Carbon::now()) { 
      $og -> eventStatus = "On Going"; 
      $og -> save(); 
      echo "Updated to ongoing!"; 
     } 
     else { 
      // echo $og -> reservationSTart; 
     } 

    } 

    // Change to Done 
} 

這個功能是通過一個任務調度發射。任務計劃程序運行命令php.exe {path/to/my}/artisan schedule:run,當然,php.exe會添加到系統變量PATH中。任務是每分鐘發射一次命令。在我的內核,我加入這個代碼我的日程安排功能裏:

if (strtolower(env('SYS_REALTIME')) == "yes") { 
     $schedule->call('App\Http\Controllers\[email protected]') -> everyMinute(); 
} 

現在,每次我開的命令(如果不管它是通過人工調度運行,或者通過任務調度解僱),我總是得到一個錯誤:

Running scheduled command: 
App\Http\Controllers\[email protected] 
Started For Each 


[InvalidArgumentException] 
Unexpected data found. 
Unexpected data found. 
Data missing 

我希望系統從查詢結果中獲得時間,然後將其與當前時間進行比較。如果它在開始和結束時間之間,我想將eventStatus值切換到On Going。下面是在數據庫中的字段列表:

  • 我試着用dd()顯示的$ongoing值:

    primeID - INT AI 
    reservationName - VARCHAR(30) 
    dateReserved - date 
    reservationStart - time 
    reservationEnd - time 
    

    因此,這裏是我到目前爲止已經試過。它成功顯示有關變量(包括日期和時間)的所有內容。

  • 我試過用dd()來顯示$og的值。它成功顯示傳遞的變量的轉儲,包括日期和時間。
  • 我試過用dd()來顯示$og -> reservationStart的值。發現意外的數據(就像我上面所述的錯誤)。也試過在reservationEnd。不過,它會拋出一個錯誤。
  • 我試着用dd()來顯示$og -> dateReserved的值。它會正確顯示日期的轉儲。
  • 我試着刪除變量和成員之間的空格。我仍然有一個錯誤。同樣的錯誤。
  • 我試着刪除foreach區塊內的所有代碼,但echo "Started For Each\n";除外。循環成功運行。
  • 我試着在我的Laravel查詢中刪除get()。它沒有進入循環。
  • 我試着在我的Laravel查詢中刪除select('*')。出現相同的錯誤。
  • 我嘗試評論if語句,並使用dd()來顯示$og -> reservationStart。它引發同樣的錯誤。試着與reservationEnd,再次拋出相同的錯誤。

我的代碼有什麼問題?

回答

0

我已經找到答案了。在MySQL中,日期在存儲時間時被修剪。我只是將數據類型更改爲datetime,一切正常。