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

Unable to display roles in Laravel due to in_array error

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

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'));
}

然后我试图显示哪些权限具有此角色,以便我可以 check/uncheck 并编辑它们。在我看来我有这个循环

@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() expects parameter 2 to be array, object given

这一行:

{{ $value->display_name }}

这里有什么问题?

请在您的函数中更新这行代码edit($id)

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

说明: 您正在传递 in_array

中的任何对象

只需要转换成数组

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