php - 比较 Laravel Eloquent Result 并获取日期

标签 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 block 内的所有代码(echo "Started For Each\n"; 除外)。循环成功运行。
  • 我尝试删除 Laravel 查询中的 get() 。它没有进入循环。
  • 我尝试删除 Laravel 查询中的 select('*') 。出现同样的错误。
  • 我尝试注释 if 语句并使用 dd() 显示 $og ->reservationStart。它抛出同样的错误。再次尝试使用 reservationEnd,抛出相同的错误。

我的代码有什么问题吗?

最佳答案

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

关于php - 比较 Laravel Eloquent Result 并获取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46746939/

相关文章:

mysql - 将 yyyymmdd(int 类型) 转换为日期

python - 更改 zip 文件元素的上次修改时间

Django从日期时间开始按日期分组

php - 正则表达式:删除 "double-quotes"内的所有文本(包括多行)

php - 在 Woocommerce 中按状态和自定义 ACF 字段显示订单数量

php - 可以在一列php中显示来自mysql的多个值

mysql - 从终端读取数据并插入MySQL

javascript - 从字符串 javascript 转换为 Access 日期时间

PHP proc_open 不起作用 - 给我 "Missing handle qualifier in array"

php - 从包含变量的表单中将变量插入 MYSQL