Arrays Laravel 5.4-返回NULL而不是数值的数组
有一个问题困扰了我一段时间 每次呈现侧边栏时,我都有一个服务提供商将数据传递给所有视图。像这样:Arrays Laravel 5.4-返回NULL而不是数值的数组,arrays,laravel,null,Arrays,Laravel,Null,有一个问题困扰了我一段时间 每次呈现侧边栏时,我都有一个服务提供商将数据传递给所有视图。像这样: ` public function boot() { $userrole = array (DB::table('users')->where('id','=', Auth::id())->value('role')); $menucase1 = [3,4,9,10]; $menucase2 = [1,2,3,10];
`
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)}
返回menucase数组的正确值,但$userrole的NULL
如果我在控制器中声明相同的$userrole
变量并在视图中调用该变量,则收到的数据是正确的
为什么会这样
提前感谢我不明白你到底想做什么
如果要获取用户角色作为数组,可以使用pull
方法:
$userRole = User::where('id', Auth::id())->pluck('role')->toArray();
但对于当前用户,您只需获得该角色即可
$userRole = [Auth::user()->role];
UPD:您也可以在视图中执行此操作,而无需任何共享
{{ Auth::user()->role }}
我不明白你到底想做什么
如果要获取用户角色作为数组,可以使用pull
方法:
$userRole = User::where('id', Auth::id())->pluck('role')->toArray();
但对于当前用户,您只需获得该角色即可
$userRole = [Auth::user()->role];
UPD:您也可以在视图中执行此操作,而无需任何共享
{{ Auth::user()->role }}
如果您的用户有来自不同表的多个角色,并且您定义了关系,那么您可以这样做
$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.
如果您的用户有来自不同表的多个角色,并且您定义了关系,那么您可以这样做
$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.
这是因为会话在控制器创建后开始。所以,只需检查Auth::id-它将为null。谢谢,我刚刚打印了userid,如下面的{{Auth::id()}
,它返回了一个值。@kolley-如何检查我的会话是否在控制器启动后开始。。。我是一个新手(Auth::id());这是因为会话在控制器创建后开始。所以,只需检查Auth::id-它将为null。谢谢,我刚刚打印了userid,如下面的{{Auth::id()}
,它返回了一个值。@kolley-如何检查我的会话是否在控制器启动后开始。。。我是一个新手(Auth::id());谢谢你的帮助。主要目的是根据用户的角色过滤边栏链接的内容。我知道有完整的软件包来实现这一点,我已经尝试过了,但我是一个新手,从来没有让任何其他的解决方案工作。。。。因此,我尝试将一组我知道需要的数据传递给所有页面、用户角色和菜单条件(使用ifs进行测试)。我已经尝试了您的第一个解决方案$userRole=User::where('id',Auth::id())->pulk('role')->toArray()
并返回userrole的空数组index@MarcoAssunção这是一个很好的角色/权限控制包。检查一下,也许你会发现它很有用。我已经测试过了,但是我得到的想法是我需要在我的项目中改变很多东西。现在我只是尝试一个更简单的解决方案。我是一个新手。。。小步骤:)如果在我看来我这样做{{Auth::user()->role}
,它将显示用户角色。但是如果我更改这个$userrole=array(DB::table('users')->where('id','=',Auth::id())->value('role')
对于服务提供者中的此{{Auth::user()->role}
,我在尝试获取非对象的属性时收到错误。因此,正如有人之前所说,我可能在会话开始之前启动控制器。我不知道下一步该做什么…谢谢你的帮助。主要目的是根据用户的角色过滤边栏链接的内容。我知道有完整的软件包来实现这一点,我已经尝试过了,但我是一个新手,从来没有让任何其他的解决方案工作。。。。因此,我尝试将一组我知道需要的数据传递给所有页面、用户角色和菜单条件(使用ifs进行测试)。我已经尝试了您的第一个解决方案$userRole=User::where('id',Auth::id())->pulk('role')->toArray()
并返回userrole的空数组index@MarcoAssunção这是一个很好的角色/权限控制包。检查一下,也许你会发现它很有用。我已经测试过了,但是我得到的想法是我需要在我的项目中改变很多东西。现在我只是尝试一个更简单的解决方案。我是一个新手。。。小步骤:)如果在我看来我这样做{{Auth::user()->role}
,它将显示用户角色。但是如果我更改这个$userrole=array(DB::table('users')->where('id','=',Auth::id())->value('role')
对于服务提供者中的此{{Auth::user()->role}
,我在尝试获取非对象的属性时收到错误。因此,正如有人之前所说,我可能在会话开始之前启动控制器。我不知道下一步该做什么。。。