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

感谢您的提示,但我特别在寻找如何使用一对多关系而不是多对多 – PaulK 2013-03-25 09:40:11

正如你所看到的,角色返回一个数组,所以你要访问它像一个数组

访问正确的方式,将

$用户>角色[0] - > ID