Я использую Laravel 5.2 с Zicaco Entrust для управления разрешениями и ролями.
У меня есть меню для пользователя, и я использую блейд-систему laravel, чтобы показать меню с @permission для каждого раздела меню, потому что я показываю раздел меню, только если у пользователя есть разрешение на видеть это.
@permission(['upload'])
<ul class="nav side-menu">
<li><a><i class="fa fa-home"></i>DB Feed <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
@permission(['file-upload'])
<li><a href="{!!route('uploadform')!!}">file upload</a></li>
@endpermission
@permission(['***-upload'])
<li><a href="{!!route('***uploadform')!!}">*** upload</a></li>
@endpermission
@permission(['***-upload'])
<li><a href="{!!route('***uploadform')!!}">*** upload</a></li>
@endpermission
@permission(['***-upload'])
<li><a href="{!!route('***uploadform')!!}">*** upload</a></li>
@endpermission
</ul>
</li>
</ul>
@endpermission
И так продолжается, так как у меня есть около 50 различных @permission в разделе моего меню.
Теперь, когда я смотрю другой доступ mysql, я вижу, что это выполняет 50 раз один и тот же запрос к БД:
select `roles`.*, `role_user`.`user_id` as `pivot_user_id`, `role_user`.`role_id` as `pivot_role_id` from `roles` inner join `role_user` on `roles`.`id` = `role_user`.`role_id` where `role_user`.`user_id` = '1'
select `permissions`.*, `permission_role`.`role_id` as `pivot_role_id`, `permission_role`.`permission_id` as `pivot_permission_id` from `permissions` inner join `permission_role` on `permissions`.`id` = `permission_role`.`permission_id` where `permission_role`.`role_id` = '1'
Как я могу изменить это поведение, чтобы оно выполняло только один набор запросов?
Спасибо.