首页 > 解决方案 > Laravel Carbon 返回 0 个结果

问题描述

我需要为数据库中的用户获取本月数据,所以我写:

 dd($user->products->where('paid',1)->where('created_at','>=', Carbon::now()->startOfMonth()->toDateString())->all());

我得到了 0 个结果...

当我尝试Carbon::now()->subMonth()它的效果很好但最后 30 天还给我时......

我该如何解决这个问题?如何仅获取本月数据?

标签: phplaraveleloquentphp-carbon

解决方案


->toDateString()导致查询查找一个string值,而不是一个date. 有两种方法可以解决这个问题:

(...)->where('created_at', '>=', Carbon::now()->startOfMonth())
// OR
(...)->whereDate('created_at', '>=', Carbon::now()->startOfMonth()->toDateString())

如果你只使用一个Carbon变量,Laravel 知道检查date逻辑。或者,如果您使用的是 a string,则可以覆盖where逻辑以将其视为 adate通过使用->whereDate()


推荐阅读