我正在Laravel中构建一个用户具有角色的应用程序。
我已使用return $this->belongs_to('Role')
设置了用户模型,并使用return $this->has_many('User')
设置了角色模型,用户数据库表的列为role_id。
我的问题是阅读,还通过用户模型更新角色。下面的代码是我一直在尝试的,但到目前为止还没有运气:
控制器
return View::make('admin.users.index')->with('users', User::paginate(50));
// Also tried User::with('role')->paginate(50) which doesn't help
查看
@foreach($users->results as $user)
{{ $user->role->role }} // Trying to get property of non-object
{{ $user->role()->role }} // Undefined property
{{ var_dump($user->role) }}
// Outputs
object(Role)#39 (5) {
["attributes"]=>
array(4) {
["id"]=> string(1) "2"
["role"]=> string(4) "User"
["created_at"]=> string(19) "0000-00-00 00:00:00"
["updated_at"]=> string(19) "0000-00-00 00:00:00"
}
["original"]=>
array(4) {
["id"]=> string(1) "2"
["role"]=> string(4) "User"
["created_at"]=> string(19) "0000-00-00 00:00:00"
["updated_at"]=> string(19) "0000-00-00 00:00:00"
}
["relationships"]=>
array(0) {
}
["exists"]=> bool(true)
["includes"]=>
array(0) {
}
}
@endforeach
更新是一个类似的故事 - $user->role = Input::get('role')
也不起作用。
我显然在这里遗漏了一些东西,有人能告诉我这样做的正确方法吗?
答案 0 :(得分:0)
检查出来:http://vespakoen.github.com/authority-laravel/
它是laravel的ACL Authority捆绑包。用户可以拥有1到n个角色,因此它使用this->has_many_and_belongs_to
。
答案 1 :(得分:0)
如您所见,role返回一个数组,因此您必须像数组一样访问它
访问它的正确方法是
$用户>作用[0] - >编号