whereBetween没有从数据库中获取数据

时间:2018-02-14 21:25:04

标签: php laravel date php-carbon

我想在两天之间得到一些日期:

$t = TrackingCode::where("organization_id", 10)
    ->whereBetween("tracking_codes.created_at", [Carbon::parse('2018-02-12 00:00:00'),
        Carbon::parse('2018-02-13 23:59:59')])->get()->toArray();

我有一行在2018-02-13 13:33:41处创建,但它不起作用我得到一个空的数组/集合;

到目前为止,我还尝试过这项工作但没有取得任何成功:

where("created_at", ">",Carbon::parse('2018-02-12 00:00:00'))
->orWhere("created_at","<", Carbon::parse('2018-02-13 23:59:59')

3 个答案:

答案 0 :(得分:1)

我曾经将whereDate() - &gt; whereDate()链接起来,以模仿whereBetween功能。您还可以考虑将此逻辑移动到模型上的查询范围。

$query
->whereDate("tracking_codes.created_at", ">", Carbon::parse('2018-02-12 00:00:00')
->whereDate("tracking_codes.created_at", "<", Carbon::parse('2018-02-13 23:59:59')
->get()->toArray();

但也许您可以尝试通过Carbon :: parse(&#39; 2018-02-12 00:00:00&#39;) - &gt; toDateTimeString()将碳实例转换为日期时间字符串。

$t = TrackingCode::where("organization_id", 10)
    ->whereBetween("tracking_codes.created_at", [Carbon::parse('2018-02-12 00:00:00')->toDateTimeString(),
        Carbon::parse('2018-02-13 23:59:59')->toDateTimeString()])->get()->toArray();

答案 1 :(得分:0)

您是否尝试使用created_at代替tracking_codes.created_at

$t = TrackingCode::where("organization_id", 10)
->whereBetween("created_at", [Carbon::parse('2018-02-12 00:00:00'),
    Carbon::parse('2018-02-13 23:59:59')])->get()->toArray();

你的代码应该可行,但我看到了这个区别。也许可以帮到你。

答案 2 :(得分:0)

事实上, carbon 类中的主要问题是你使用前端或显示数据是好的,但是当你与MySQL数据库交谈时,你必须更多< strong>正式,所以你可以使用这样的东西: -

$firstDate = date('2018-02-12 00:00:00', time());
$lastDate = date('2018-04-05 00:00:00', time());
$t = TrackingCode::where("organization_id", 10)
->whereBetween("created_at", [$firstDate, $lastDate])->get();