【问题标题】:Query not retrieving today's records查询不检索今天的记录
【发布时间】:2020-11-05 13:06:30
【问题描述】:

我正在尝试获取表中从今天开始的所有记录,但是 出于某种原因,它不想发生。我得到一个空集合

这是我的代码

    $products = Product::where('created_at', Carbon::today())->get();
    dd($products);

【问题讨论】:

    标签: laravel laravel-8


    【解决方案1】:

    这是因为它试图进行完全匹配(日期和时间)并且鉴于today() 返回一天开始的日期时间,它只会捕获具有该精确@987654323 的记录@值。

    您可以做些什么来缓解这种情况,即检查比该时间戳更新的值:

    $products = Product::where('created_at', '>=', Carbon::today())
                     ->get();
    

    实现它的更好方法是使用仅考虑日期的whereDate 方法:

    $products = Product::whereDate('created_at', Carbon::today())
                     ->get();
    

    the documentation 中查看更多替代方案。

    【讨论】:

      【解决方案2】:

      你应该把从今天开始创建的所有记录都拿走,以此类推。

        $products = Product::where('created_at','>=', Carbon::today()->startOfDay())->get();
      

      【讨论】:

        【解决方案3】:

        使用以下方式:

        $products = Product::whereRaw('date(created_at) = date(now())')->get();
        

        【讨论】: