从Laravel Eloquent Result

时间:2017-10-14 16:43:05

标签: php mysql datetime eloquent laravel-5.5

这是我的ReservationController中的函数:

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\ReservationController@realtime') -> everyMinute();
}

现在,每次我发出命令(无论是通过手动计划运行还是通过任务计划程序触发),我总是会收到错误:

Running scheduled command: 
App\Http\Controllers\ReservationController@realtime
Started For Each


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

我希望系统从查询结果中获取时间,然后将其与当前时间进行比较。如果它位于开始时间和结束时间之间,我想将eventStatus值切换为On Going。以下是数据库中的字段列表:

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

所以我到目前为止所做的就是:

  • 我尝试使用dd()来显示$ongoing的值。它成功显示有关变量的所有内容的转储(包括日期和时间)。
  • 我尝试使用dd()来显示$og的值。它成功显示传递的变量的转储,包括日期和时间。
  • 我尝试使用dd()来显示$og -> reservationStart的值。发现了意外的数据(就像我上面提到的错误一样)。也在reservationEnd中尝试过。不过,它会引发错误。
  • 我尝试使用dd()来显示$og -> dateReserved的值。它会正确显示日期转储。
  • 我尝试删除变量和成员之间的空格。我还是错了。同样的错误。
  • 我尝试删除除foreach之外的echo "Started For Each\n";块内的所有代码。循环成功运行。
  • 我尝试在Laravel查询中删除get()。它没有进入循环。
  • 我尝试在Laravel查询中删除select('*')。出现相同的错误。
  • 我尝试评论if语句,并使用dd()来显示$og -> reservationStart。它会抛出同样的错误。再次尝试reservationEnd会抛出相同的错误。

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

我已经找到了答案。在MySQL中,日期在存储时间时被修剪。我只是将数据类型更改为datetime,一切正常。