如何在Laravel中使用whereBetween作为日期

时间:2014-10-16 21:09:28

标签: laravel-4

我正在尝试使用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(); }}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

查询本身应该按照书面形式运行,但您可能需要验证created_attimestampdate还是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();