Laravel - 获取今天开始和结束之间的行

时间:2017-02-24 10:14:10

标签: php sql laravel date eloquent

我的表格有两个日期字段,beginend

我试图获取已经开始但尚未结束的所有行。如果今天小于begin,则不应包括在内。如果今天比end更重要,他们就不应该被包括在内。

我正在使用雄辩的laravels。这是我试过的

$now = \Carbon\Carbon::now();

$promos = \App\Models\LivePromo::
    where("begin", "<=", $now)
    ->where("end", ">=", $now)
    //Other conditions
    ->get(); 

这看起来很有效,但它也选择了已经结束的更大的行。 我怎么能像我期望的那样完成这项工作?

修改

begin列是一个日期时间列,表示&#39;促销&#39;应该开始,end列是一个日期时间列,表示&#39;促销&#39;应该结束。我只想尝试获取当前日期和时间的所有有效促销

修改

示例数据

$now = '2017-02-24 10:29:10' // \Carbon\Carbon::now();

enter image description here

2 个答案:

答案 0 :(得分:0)

从结束日期条件中删除=

$now = \Carbon\Carbon::now();

$promos = \App\Models\LivePromo::
    where("begin", "<=", $now)
    ->where("end", ">", $now)
    ->get(); 

答案 1 :(得分:0)

此外,它可能取决于您的数据库引擎。

某些引擎要求您使用whereDate()方法而不是普通的where()

$promos = LivePromo::whereDate("begin", "<=", $now)
    ->whereDate("end", ">", $now)
    ->get();