Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Laravel 5.4-返回NULL而不是数值的数组_Arrays_Laravel_Null - Fatal编程技术网

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}
,我在尝试获取非对象的属性时收到错误
。因此,正如有人之前所说,我可能在会话开始之前启动控制器。我不知道下一步该做什么。。。