Php 拉威尔于同一日期创建
我试图获得在同一日期创建的Php 拉威尔于同一日期创建,php,laravel,eloquent,Php,Laravel,Eloquent,我试图获得在同一日期创建的用户,但我的数据库中的时间是UTC,因此当用户在晚上10:00(当地时间)创建时,它存储为第二天的凌晨1:00,所以当我使用whereDate('created_at','=',Carbon::now('America/SaoèPaulo')时它没有得到用户请尝试在两者之间 Model::whereBetween('created_at', [Carbon::now()->startOfDay(), Carbon::now()->endOfDay()])-&
用户
,但我的数据库中的时间是UTC,因此当用户
在晚上10:00(当地时间)创建时,它存储为第二天的凌晨1:00,所以当我使用whereDate('created_at','=',Carbon::now('America/SaoèPaulo')时
它没有得到用户
请尝试在两者之间
Model::whereBetween('created_at', [Carbon::now()->startOfDay(), Carbon::now()->endOfDay()])->get();
其他可能的方式:
where('created_at', '>=', date('Y-m-d').' 00:00:00'));
在@sta的帮助下,他建议改用
whereBetween()
,我首先得到了当地时间的开始/结束时间,然后将其转换回UTC
$start_of_day = Carbon::now('America/Sao_Paulo')->startOfDay()->utc();
$end_of_day = Carbon::now('America/Sao_Paulo')->endOfDay()->utc();
return User::whereBetween('created_at',[$start_of_day,$end_of_day])->get();
如果您想在同一日期创建用户,为什么不简单地按创建时间分组,那么您就不必关心这些细节。无需使用
Carbon::today
,因为laravel使用函数now()
作为辅助函数Model::whereDay('date',now()->day)->get()代码>谢谢你的提示,我实际上只使用了Now()
,而且很有效,我不知道为什么要在这里放碳。我想我从另一个问题中得到了代码。是的,它可以工作,但仍然得到与UTC相关的数据,我需要在同一天创建的数据,与当地时间相关。您配置中的当前时区是什么?UTC,我需要将其保留在UTC,因为其他具有不同时区的国家将可以访问reportsTry,而不是Carbon::now('UTC')
TrywhereBetween
而不是Model::whereBetween('date',[Carbon::now()->startOfDay(),Carbon::now()->endOfDay())->get()代码>如我所说,创建的_at存储在UTC中,我需要在与本地时间相关的同一天创建的用户。
whereDate('created_at', '=', Carbon::today()->toDateString());
$start_of_day = Carbon::now('America/Sao_Paulo')->startOfDay()->utc();
$end_of_day = Carbon::now('America/Sao_Paulo')->endOfDay()->utc();
return User::whereBetween('created_at',[$start_of_day,$end_of_day])->get();