我使用Laravel 5.2和Zicaco Entrust来管理权限和角色。
我有一个供用户使用的菜单,我使用laravel刀片系统来显示每个菜单部分的@权限菜单,因为我只显示用户有权查看的菜单部分。
@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个不同的@权限。
现在,当我查看不同的mysql访问时,我可以看到它对DB:执行了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'
如何更改此行为,使其只执行一组请求?
谢谢。
好的,看来Laravel的Entrust插件不再开发了。我可以通过config文件夹中的cache.php文件找到解决方案,并添加以下行:
'ttl' => 30 //In minutes