Laravel 5.4 - 数组返回NULL而不是数值

时间:2017-04-07 15:10:24

标签: 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]; 
   $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变量并在视图中调用该变量,则接收的数据是正确的。

为什么会这样?

提前致谢

2 个答案:

答案 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.