我在$users
和$students
之间有很多关系。如果$student
处于活动状态并且$user
处于活动状态,则认为该学生处于活动状态。
当我调用$user->students()->active
时,可以在不传递参数的情况下在范围内获得$user
模型吗?下面的示例:
class User extends Model {
// Normal model stuff
function students() {
return $this->belongsToMany('students', 'user_students');
}
}
class Student extends Model {
// Normal model stuff
function scopeActive($query) {
// Can I get the $user model here without a parameter?
}
}
所以我想检查scopeActive
函数内部的用户状态,这将更改查询。
答案 0 :(得分:1)
首先,当您尝试阅读时,这种关系听起来很奇怪:一个用户有很多学生,一个学生有很多用户,但是无论如何。
我认为您无法获得对调用方的引用,但可以将参数传递给自定义范围,即所谓的dynamic scopes
因此您的范围可以是:
public function scopeActive($query, $user)
{
// here you have reference to the $user
}
,您可以这样称呼它:
Student::active($user);