Как я могу получить данные родительской модели внутри локальной области видимости? - PullRequest
0 голосов
/ 03 января 2019

У меня есть отношения многие ко многим между $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 голосов
/ 03 января 2019

Прежде всего отношения звучат странно, когда вы пытаетесь их прочитать: у пользователя много учеников, а у ученика много пользователей, но в любом случае.

Не думаю, что вы можете получить ссылку навызывающего, но вы можете передать параметр в пользовательскую область, они известны как динамические области

Таким образом, ваша область может быть:

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

и вы можете вызватьэто так:

Student::active($user);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...