Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте!
Есть метод в Политике
namespace App\Policies;
use Illuminate\Auth\Access\HandlesAuthorization;
use App\User;
class UserPolicy
.....
public function index(User $user) {
return in_array($user->group()->first()->name, ['Admin', 'Moderator']);
}
Каждый раз выполняется запрос получения группы. Где в движке laravel необходимо один раз выполнить with('group') ?
Не в сети
Каждый раз выполняется запрос получения группы. Где в движке laravel необходимо один раз выполнить with('group') ?
Во первых:
return in_array($user->group->first()->name, ['Admin', 'Moderator']);
(убрать скобки)
Изменено covobo (08.08.2017 14:34:57)
Не в сети
Не помогло. Теперь вместо запросов
select * from `user_groups` where `user_groups`.`id` = '3' limit 1
они стали
select * from `user_groups` limit 1
Не в сети
Если ты проверяешь только текущего пользователя, то ты можешь "подгрузить" связь в посреднике, например:
auth()->user()->load('group');
И потом обращаться к загруженным данным из любой части приложения:
auth()->user()->group->first()->name
Изменено AlexeyMezenin (07.08.2017 17:39:16)
Не в сети
Если ты проверяешь только текущего пользователя, то ты можешь "подгрузить" связь в посреднике, например:
А куда это вставить единоразово, чтобы везде auth()->user() уже была подгружена связь?
Подобная проверка используется во всех политиках на проекте.
Не в сети
А куда это вставить единоразово, чтобы везде auth()->user() уже была подгружена связь? Подобная проверка используется во всех политиках на проекте.
Я написал выше, что можно это сделать в посреднике (middleware). А посредника подключить к необходимым маршрутам, логично будет подключить к той же группе маршрутов, к которой подключен auth.
Не в сети
Страницы 1