Php 如何检查laravel中的当前日期记录?

Php 如何检查laravel中的当前日期记录?,php,laravel,Php,Laravel,我试图只检查今天或当前日期的game\u id,为此我尝试按照脚本进行操作 $todayExist = Training::whereRaw("Date(created_at)=Curdate() and game_id=$game_id")->get(); if($todayExist->count() > 0 ){ $error = 1; $result = false; } 上面的查询输出

我试图只检查今天或当前日期的
game\u id
,为此我尝试按照脚本进行操作

$todayExist = Training::whereRaw("Date(created_at)=Curdate() and game_id=$game_id")->get();
        if($todayExist->count() > 0 ){
            $error = 1;
            $result = false;
        } 
上面的查询输出是

select * from `games_training` where Date(created_at)=Curdate() and game_id=6
但是对于
game_id=6
有重复条目,因为它是在3小时前(迪拜时间)生成的

那么,有没有人能给我指点一下,到底是什么问题?这是错误的查询还是因为服务器时区而发生的

我只是插入记录,在服务器数据库中显示的是
09:31:57
,意思是上午9:31,但我在迪拜,现在是下午1:33

有人能给我指点一下吗

非常感谢。

转到

配置->app.php并更改“时区”=>“亚洲/迪拜”

。 然后


php artisan config:cache

您可以在“config->app.php”中找到时区配置,只需将
'timezone'=>'UTC'更改为'timezone'=>'Asia/Dubai',
并重新启动XAMPP。

当前日期对您意味着什么?因为您有mysql服务器时区、lavarel时区设置和计算机的时区设置。。。 编写时:Date(created_at)=Curdate(),Curdate()检查mysql服务器的时区。
那么你想找到的“当前日期”是什么?请记住,世界上每个用户都有自己的“当前本地日期”,而mysql数据库中存储的日期只能是固定日期(最好是UTC以提高可靠性…

Laravel 5.6+用户,您可以这样做

$posts = Post::whereDate('created_at', Carbon::today())->get();
除了
now()
today()
,您还可以使用
昨天()
和明天(),然后使用以下命令:

startOfDay()/endOfDay()
startOfWeek()/endOfWeek()
startOfMonth()/endOfMonth()
startOfYear()/endOfYear()
startOfDecade()/endOfDecade()
startOfCentury()/endOfCentury()

使用查询生成器,使用
Mysql
default
CURDATE
函数获取当天的所有记录

 $records = DB::table('users')->select(DB::raw('*'))
                  ->whereRaw('Date(created_at) = CURDATE()')->get();
    dd($record);

09:31是UTC时间。检查您将获得的UTC当前时间,默认时区在laravel中为UTC。您应该在时区中使用亚洲/迪拜。您最好在DB中使用UTC,并在应用程序中进行时区转换。如果您的应用程序已在多个具有不同时区的位置启动,则您可以根据特定时区进行应用程序配置。它将帮助您管理日期和时间计算。是的,最好在应用程序中进行,而不是在数据库中。见和。