Laravel Spat ie Получение всех разрешений при активной загрузке - PullRequest
0 голосов
/ 30 марта 2020

все! Я использую Laravel Spat ie Пакет разрешений. И я могу получить все назначенные пользователю разрешения, как это.

$user->getAllPermissions()

Тем не менее, я хочу получить все разрешения с нетерпением загрузки. Возможно, вот так.

$users = User::with('getAllPermissions')->get();

Но это не сработало.

Я пытался

$users = user::with('permissions')->get();

Но количество запросов было таким же, как у

$users = user::get();

То есть $user->getAllPermissions() уже загруженный запрос?

Или есть загруженный запрос?

1 Ответ

1 голос
/ 30 марта 2020

Довольно сложно получить все разрешения в списках пользователей.

$users = user::with('permissions')->get();

это предоставит модель разрешений со списком пользователей. Таким образом, вы получите только разрешения, назначенные пользователю. Но у пользователя есть роль, тогда разрешение роли не будет добавлено.

Но функция $user->getAllPermissions(); предоставит вам все разрешения, связанные с ролью пользователя и разрешением. Но нам нужны все разрешения со списком пользователей.

Я создал функцию Mutators для получения разрешений со списком пользователей.

public function getPermissionAttribute()
{
    return $this->getAllPermissions();
}

сейчас Вы можете добавить в свою модель

protected $appends = [
    'permission'
]

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

$users = user::with(['permissions', 'roles'])->get();

Или добавьте в свой модель пользователя

protected $with =[
   'permissions',
    'roles'
]

Я думаю, это поможет вам.

...