Laravel Eloquent' whereBetween'不起作用

时间:2016-02-04 14:45:21

标签: laravel-5 eloquent where-clause

我想在给定的时间段内获得一个列表,如下所示:

    public function UsersWork()
    {
        return $this->hasMany('App\Models\UsersWork', 'user_id')->whereBetween('end', ["DATE_SUB(CURDATE() INTERVAL 5 YEAR)", date('Y-m-d')]);
    }

这将返回整个列表,而不仅仅是5年时间段的预期列表。

你能找出这种行为的原因吗?

1 个答案:

答案 0 :(得分:0)

如果要使用原始sql函数,则必须使用DB::raw()

public function UsersWork()
{
    return $this->hasMany('App\Models\UsersWork', 'user_id')
        ->where(function($q){
            $q->where(DB::raw('recur_at BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()'));
        });
}

可能需要在类声明之前在顶部添加use DB;