Laravel 5 拉雷维尔雄辩';其中';不';行不通

Laravel 5 拉雷维尔雄辩';其中';不';行不通,laravel-5,eloquent,where-clause,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')]); } 公共函数UsersWork() { return$this->hasMany('App\

我正在尝试获取给定时间段内的列表,如下所示:

public function UsersWork() { return $this->hasMany('App\Models\UsersWork', 'user_id')->whereBetween('end', ["DATE_SUB(CURDATE() INTERVAL 5 YEAR)", date('Y-m-d')]); } 公共函数UsersWork() { return$this->hasMany('App\Models\UsersWork','user\u id')->其中('end',[“DATE\u SUB(CURDATE()INTERVAL 5 YEAR)”,DATE('Y-m-d')); } 这将返回整个列表,而不仅仅是5年期间的预期列表


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

当你想使用原始sql函数时,你必须使用
DB::raw()

公共函数UsersWork()
{
返回$this->hasMany('App\Models\UsersWork','user\u id')
->其中(函数($q){
$q->where(DB::raw('recurr_在DATE_SUB(NOW(),INTERVAL 7 DAY)和NOW()');
});
}

可能需要添加
使用DB在类声明之前位于顶部。

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

公共函数UsersWork()
{
返回$this->hasMany('App\Models\UsersWork','user\u id')
->其中(函数($q){
$q->where(DB::raw('recurr_在DATE_SUB(NOW(),INTERVAL 7 DAY)和NOW()');
});
}

可能需要添加
使用DB在类声明之前位于顶部。

您的解决方案的结果表明,我现在有一个未定义的变量,对于dd(),我没有结果。请尝试将它分成两个方法。只使用
$this->hasMany('App\Models\usersWork','user\u id')离开
usersWork()
并向同一个模型添加另一个函数,该模型使用
return$this->usersWork()->进行扩展,其中(…
结果保持不变。您的解决方案的结果表明,我现在有一个未定义的变量,使用dd()我没有结果。尝试将其分成两个方法。只使用
usersWork()
保留
$this->有很多('App\Models\UsersWork','user_id');
并向同一模型添加另一个函数,该函数使用
return$this->UsersWork()->其中(…
它保持相同的结果