【发布时间】:2021-10-05 04:01:32
【问题描述】:
我有表用户和角色的权限。每个用户可以有 2 个或更多角色。目前我在需要访问用户角色时使用 foreach。我需要的是,当我登录时,我想要创建返回角色用户登录的数组数据的函数。 这是我的来源。
Users.php(模型)
<?php
namespace App\Models;
.
.
.
class User extends Authenticatable implements MustVerifyEmail
{
use HasFactory, Notifiable;
.
.
.
public function roles()
{
return $this->hasMany(RoleUserModel::class, 'id_user');
}
public function roles_array()
{
$roleUser = [];
foreach($this->roles() as $role){
$roleUser[] = $role->id_role;
}
return collect($roleUser);
}
.
.
.
}
sidebar.blade.php(视图)
<?php
$roleUser = [];
foreach(Auth::user()->roles as $role){
$roleUser[] = $role->id_role;
}
$idMenu = App\Models\Sistem\RoleMenuModel::whereIn('id_role', $roleUser)->pluck('id_menu')->toArray();
?>
@foreach(App\Models\Sistem\MenuModel::where('parent_id', 0)->whereIn('id', $idMenu)->get() as $menu)
<li class="nav-item">
<a href="{{ $menu->url }}" class="nav-link">
<i class="nav-icon {{ $menu->icon }}"></i>
<p>
{{ $menu->deskripsi }}
</p>
</a>
@if(count($menu->avMenuChilds))
@include('_partials.menuChild',['avMenuChilds' => $menu->avMenuChilds])
@endif
</li>
@endforeach
我想做的是删除 sidebar.blade.php 中的 foreach 并调用如下方法:
<?php
$idMenu = App\Models\Sistem\RoleMenuModel::whereIn('id_role', Auth::user()->roles_array)->pluck('id_menu')->toArray();
?>
@foreach(App\Models\Sistem\MenuModel::where('parent_id', 0)->whereIn('id', $idMenu)->get() as $menu)
<li class="nav-item">
<a href="{{ $menu->url }}" class="nav-link">
<i class="nav-icon {{ $menu->icon }}"></i>
<p>
{{ $menu->deskripsi }}
</p>
</a>
@if(count($menu->avMenuChilds))
@include('_partials.menuChild',['avMenuChilds' => $menu->avMenuChilds])
@endif
</li>
@endforeach
提前感谢:)
【问题讨论】: