【发布时间】:2020-11-05 13:06:30
【问题描述】:
我正在尝试获取表中从今天开始的所有记录,但是 出于某种原因,它不想发生。我得到一个空集合
这是我的代码
$products = Product::where('created_at', Carbon::today())->get();
dd($products);
【问题讨论】:
我正在尝试获取表中从今天开始的所有记录,但是 出于某种原因,它不想发生。我得到一个空集合
这是我的代码
$products = Product::where('created_at', Carbon::today())->get();
dd($products);
【问题讨论】:
这是因为它试图进行完全匹配(日期和时间)并且鉴于today() 返回一天开始的日期时间,它只会捕获具有该精确@987654323 的记录@值。
您可以做些什么来缓解这种情况,即检查比该时间戳更新的值:
$products = Product::where('created_at', '>=', Carbon::today())
->get();
实现它的更好方法是使用仅考虑日期的whereDate 方法:
$products = Product::whereDate('created_at', Carbon::today())
->get();
在the documentation 中查看更多替代方案。
【讨论】:
你应该把从今天开始创建的所有记录都拿走,以此类推。
$products = Product::where('created_at','>=', Carbon::today()->startOfDay())->get();
【讨论】:
使用以下方式:
$products = Product::whereRaw('date(created_at) = date(now())')->get();
【讨论】: