我正在尝试使用created_at
列获取每周新用户的数量。我正在尝试使用whereBetween
语法,但它总是会返回0
,即使是假设它会返回。
{{ DB::table('users')
->whereBetween('created_at', array(date("Y/m/d h:i:s", strtotime('sunday last week')), date("Y/m/d h:i:s", strtotime('saturday this week'))))->count(); }}
有什么建议吗?
答案 0 :(得分:1)
查询本身应该按照书面形式运行,但您可能需要验证created_at
是timestamp
,date
还是datetime
类型的列。在创建users表时,您是否使用迁移来创建users表,如果是,那么您是否指定了$table->timestamps();
?或者您是否手动定义created_at
列,并可能将其设置为字符串?
其他一些(无关的)建议:
•您似乎在视图中运行此查询,使用刀片回显计数。这种逻辑可以在其他地方更好地处理,可能在您的用户模型中,并且结果由控制器传递给视图。
•您可以使用PHP DateTime对象简化查询,将date(...strtotime...)
替换为date_create(...)
:
$usersThisWeek = User::whereBetween(
'created_at', array(
date_create('sunday last week'),
date_create('saturday this week')
))->count();