我正在使用Lumen 5.5并希望创建一个范围,将查询限制为另一个模型中的约束。这是我的相关代码。
发布模型:
public function user()
{
return $this->belongsTo('App\User', 'user-id', 'user-id');
}
public function scopeActive()
{
return $this->where('status', '=', '1')->whereHas('user', function($q) {
$q->activeUser();
});
}
在用户模型中:
public function posts()
{
return $this->hasMany('App\Post', 'user-id');
}
public function scopeActiveUser()
{
return $this->whereDate('seen', '>=', date('Y-m-d', strtotime('-1 months')));
}
似乎没有触发Post模型中activeUser()
中的whereHas
。
用activeUser()
取代whereDate('seen', '>=', date('Y-m-d', strtotime('-1 months')))
可以正常工作,但却错过了Lumen / Laravel的范围界定功能。
我在这里缺少什么?
答案 0 :(得分:1)
按照in the docs:
所述添加$query
部分
public function scopeActive($query)
{
return $query->where('status', '=', '1')->whereHas('user', function($q) {
$q->activeUser();
});
}
和
public function scopeActiveUser($query)
{
return $query->whereDate('seen', '>=', date('Y-m-d', strtotime('-1 months')));
}