October CMS: как расширить бэкэнд-пользователя с помощью роли

Мне удалось расширить класс Backend\Models\User и добавить метод запроса с заданной областью для получения только суперпользователей:

public function boot()
{
    User::extend(function($model) {
        $model->addDynamicMethod('scopeIsSuperUser', function($query) {
            return $query->where('is_superuser', 1);
        });
    });
}

Как я могу иметь метод области для пользователей, которые находятся в определенной группе? Например, мне нужны только пользователи с ролью «BookManager». Можно ли использовать отношение $groups, уже определенное в классе Backend\Models\User?

public $belongsToMany = [
    'groups' => ['Backend\Models\UserGroup', 'table' => 'backend_users_groups']
];

person B Faley    schedule 25.11.2016    source источник


Ответы (1)


Это должно сделать это

User::extend(function($model) {
    $model->addDynamicMethod('scopeIsBookManager', function($query) {
        return $query->whereHas('groups', function ($query) {
            $query->where('code', 'BookManager');
        });
    });
});
person Edison    schedule 18.12.2017