Laravel获取的记录以月份和年份为单位


Laravel get records resides in month and year

我正在使用Laravel 5.2

我有一个数据库表schedules作为:

id    name     start_date    end_date
1     AAAAA    2016-01-01    2016-12-31
2     BBBBB    2016-02-01    2016-03-31
3     CCCCC    2016-04-01    2016-06-12
4     DDDDD    2016-04-18    2016-07-15
5     EEEEE    2016-03-15    2016-04-14
6     FFFFF    2016-05-01    2016-08-26

现在,我想获取resides in current month,即April-2016的时间表的记录。结果应该是

id    name     start_date    end_date
1     AAAAA    2016-01-01    2016-12-31
3     CCCCC    2016-04-01    2016-06-12
4     DDDDD    2016-04-18    2016-07-15
5     EEEEE    2016-03-15    2016-04-14

我试过使用

Schedule::whereDate('start_date', '<=', '2016-04-01')
->whereDate('end_date', '>=', '2016-04-30')
->get();

但它排除了具有id14的记录。

我怎样才能做到这一点?

此代码传递您的标准。试试看。

DB::select(DB::raw("SELECT * FROM schedules WHERE start_date <= '2016-04-30' AND end_date >= '2016-04-01'"))

或与Eloquent:

Schedule::where('start_date','<=', '2016-04-30')->where('end_date','>=', '2016-04-01')->get();

检查是否包含&重叠日期范围:

Schedule::where(function($q) use($start_date,$end_date) {
    //Inclusive Date Range
    return $q->orWhere(function($q) use($start_date,$end_date) {
        return $q->where('start_date','>=',$start_date)
            ->where('end_date','<=',$end_date);
    })
    //Overlapping Date Range
    ->orWhere(function($q) use($start_date,$end_date) {
        return $q->where('start_date','<=',$start_date)
            ->where('end_date','>=',$end_date);
    });
})
->get();