如何在本地范围内获取父模型数据?

时间:2019-01-02 21:20:38

标签: php laravel eloquent

我在$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函数内部的用户状态,这将更改查询。

1 个答案:

答案 0 :(得分:1)

首先,当您尝试阅读时,这种关系听起来很奇怪:一个用户有很多学生,一个学生有很多用户,但是无论如何。

我认为您无法获得对调用方的引用,但可以将参数传递给自定义范围,即所谓的dynamic scopes

因此您的范围可以是:

public function scopeActive($query, $user)
{
   // here you have reference to the $user
}

,您可以这样称呼它:

Student::active($user);