最近我开始学习Larave,但是从版本4.2开始。我跟随SO建议的其他用户转储v4.2并从5.4开始。所以我这样做了。
我已经安装了laravel 5.4。*和Entrust包并尝试构建简单的ACL cms。
到目前为止一切都很好,但是当我尝试Edit
某个角色时我有错误
in_array()期望参数2为数组,给定对象
问题在于刀片:
@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
这是控制器功能
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'));
}
一般来说,我知道错误意味着什么。这意味着查询返回集合 - 对象,但我无法理解如何解决这个问题。
答案 0 :(得分:0)
我想你想在集合对象上使用->toArray()
。
下面的文字超出了这个问题的范围。
您可以稍微修剪一下控制器。
public function edit(Role $role) // in route file you want to do Get::route('roles/{role}/edit'...)
{
//role should have relation M-M so you can access "permissions" like $role->permissions
return view('roles.edit')->withRole($role);
}
如果遵循所有约定,则应按如下方式定义M-M关系:
public function permissions()
{
return $this->belongsToMany(Permission::class, 'your pivot table', 'role_id', 'permission_id');
}