这是一个困扰我一段时间的问题。
每次呈现侧边栏时,我都有一个服务提供商将数据传递给所有视图。像这样:
`
public function boot()
{
$userrole = array (DB::table('users')->where('id','=', Auth::id())->value('role'));
$menucase1 = [3,4,9,10];
$menucase2 = [1,2,3,10];
$menucase3 = [1,3,4,9,10];
$menucase4 = [4,9];
$commondata = compact('userrole','menucase1','menucase2','menucase3','menucase4');
view()->share('commondata', $commondata);
View::composer('sidebar', function ($view) {
$userrole = array (DB::table('users')->where('id','=', Auth::id())->value('role'));
$menucase1 = [3,4,9,10];
$menucase2 = [1,2,3,10];
$menucase3 = [1,3,4,9,10];
$menucase4 = [4,9];
$commondata = compact('userrole','menucase1','menucase2','menucase3','menucase4');
$view->with('commondata', $commondata);
});
}`
执行{{ dd($commondata) }}
会返回菜单包数组的正确值,但NULL
$userrole
如果我在控制器中声明相同的$userrole
变量并在视图中调用该变量,则接收的数据是正确的。
为什么会这样?
提前致谢
答案 0 :(得分:0)
无法理解你究竟想做什么。
如果要将用户角色作为数组,可以使用pluck
方法:
$userRole = User::where('id', Auth::id())->pluck('role')->toArray();
但对于当前用户,您可以获得角色
$userRole = [Auth::user()->role];
UPD:您也可以在没有任何共享的情况下进行查看
{{ Auth::user()->role }}
答案 1 :(得分:0)
如果您的用户具有来自不同表的许多角色,并且您已定义了关系,则可以执行
$userrole = Auth::user()->roles->pluck('name');
//will return all the roles names in an array
//Replace name by the actual column you want from 'roles' table.