【问题标题】:Laravel get data by timeLaravel 按时间获取数据
【发布时间】:2021-02-07 10:21:56
【问题描述】:

我需要获取从 10 分钟前到现在创建但返回错误结果的数据

$defs = OrderDefaultProgress::where('name', 'Laundry Mencari supir')->pluck('id')->toArray();
$progresses = OrderProgress::where('created_at', '<=', Carbon::now()->subMinutes(10))->whereIn('progress_id', $defs)->get();

$progresses 返回时间戳为2021-02-07T09:15:44.000000Z 的数据,而该数据属于 8 小时前。

[
    {
        "id": "7ce3bd58-3f19-4de9-8b92-e196d6e7b97f",
        "order_id": "175fe9ed-6932-4d5e-ba8f-ec36acf7d872",
        "progress_id": "b816f3bf-9c58-4e77-8d67-b834cac4ae77",
        "created_at": "2021-02-07T09:15:44.000000Z",
        "updated_at": "2021-02-07T09:15:44.000000Z"
    }
]

奇怪的是,在我的数据库中我什至没有这样的时间戳!

【问题讨论】:

标签: php laravel


【解决方案1】:

不要在这里使用 from 'where',使用 from whereBetween inested of where like:

OrderProgress::whereBetween('created_at', [Carbon::now()->subMinutes(10), Carbon::now()])->whereIn('progress_id', $defs)->get();

我希望这对你有用。

【讨论】:

    【解决方案2】:

    需要这样的代码

    $progresses = OrderProgress::where('created_at', '>=', Carbon::now()->subMinutes(10))->whereIn('progress_id', $defs)->get();
    

    【讨论】:

      【解决方案3】:

      你应该使用whereDate方法

      OrderProgress::whereDate('created_at', '>=', Carbon::now()->subMinutes(10))
      ->whereIn('progress_id', $defs)->get();
      

      【讨论】:

      • 如果created_at 被索引,那么结果查询将忽略该索引。参考sargable queries
      猜你喜欢
      • 1970-01-01
      • 2020-02-16
      • 2021-09-13
      • 2020-10-21
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多