2017-03-05 80 views
0

我有一个注册的2天前,3号(created_at:2017年3月3日10时48分53秒)用户Laravel 5.4 wherebetween碳未能返回数据

我想注册用户在过去7天内每天计数。 我的尝试是将下面的代码放在for中,并将subday更改为for值,但它失败,返回0.任何提示?

$date = Carbon::today(); 
User::whereBetween('created_at',array($date->subDays(5)->startOfDay()->toDateString(),$date->subDays(1)->endOfDay()->toDateString()))->count() 

谢谢!

+0

什么'created_at'字段的类型? – hassan

+0

@HassanAhmed laravels默认,时间戳 – user3844579

回答

-1

你的问题是在使用Carbon包,

你从对象中减去5天,那么你减去新的一天从同一个对象实例,将返回的日期范围如下:

[因为5​​天]至[自5天加一天]

将字面上将建立这样的查询:

SELECT * FROM `xyz` WHERE created_at BETWEEN 2017-02-28 AND 2017-02-27 

和解决这个问题,你必须: -

1)重设日期与当今法

这样做的正确方法如下:

$date->today()->subDays(1)->toDateString(); 

2)利用创造新的Carbon实例新的日期初始化。

第一种方式如下:

$date = Carbon::today(); 
User::whereBetween('created_at',array($date->subDays(5)->startOfDay()->toDateString(),$date->today()->subDays(1)->endOfDay()->toDateString()))->count(); 
+0

谢谢!你是对的! – user3844579