由于in_array错误,无法在Laravel中显示角色

时间:2017-04-26 11:59:42

标签: laravel laravel-5 laravel-5.4

我有角色编辑表单,我希望能够编辑角色权限。在我的控制器中,我添加了这个

public function edit($id)
{
    $role = Role::find($id);
    $permission = Permission::get();
    $rolePermissions = DB::table("permission_role")->where("permission_role.role_id",$id)
                       ->pluck('permission_role.permission_id','permission_role.permission_id');

    return view('roles.edit',compact('role','permission','rolePermissions'));
}

然后我尝试显示哪个权限具有此角色,以便我可以选中/取消选中并编辑它们。在我看来,我有这个循环

@foreach($permission as $value)

      <label>{{ Form::checkbox('permission[]', $value->id, in_array($value->id, $rolePermissions) ? true : false, array('class' => 'name')) }}
      {{ $value->display_name }}</label><br/>
@endforeach

但是我收到了数组的错误

  
      
  1. in_array()期望参数2为数组,对象为
  2.   

在这一行:

{{ $value->display_name }}

这里有什么问题?

2 个答案:

答案 0 :(得分:1)

请在您的函数edit($id)

中更新此行代码
 $rolePermissions = DB::table("permission_role")
                       ->where("permission_role.role_id",$id)
                       ->select('permission_id')->toArray();

说明: 您正在in_array

中传递任何对象

答案 1 :(得分:1)

只需转换为数组

$rolePermissions = DB::table("permission_role")->where("permission_role.role_id", $id)
                    ->pluck('permission_role.permission_id', 'permission_role.permission_id')
                    ->toArray();