Laravel一对多关系
问题描述:
我在Laravel构建了一个用户具有角色的应用程序。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')
也不起作用。
我很明显错过了一些东西,有人能告诉我正确的方法来做到这一点吗?
答
检查了这一点:http://vespakoen.github.com/authority-laravel/
这是laravel的ACL局束。用户可以有1到n个角色,因此它使用this->has_many_and_belongs_to
。
答
正如你所看到的,角色返回一个数组,所以你要访问它像一个数组
访问正确的方式,将
$用户>角色[0] - > ID
感谢您的提示,但我特别在寻找如何使用一对多关系而不是多对多 – PaulK 2013-03-25 09:40:11