Laravel一对多关系

时间:2013-03-21 15:58:10

标签: php laravel eloquent laravel-3

我正在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')也不起作用。

我显然在这里遗漏了一些东西,有人能告诉我这样做的正确方法吗?

2 个答案:

答案 0 :(得分:0)

检查出来:http://vespakoen.github.com/authority-laravel/

它是laravel的ACL Authority捆绑包。用户可以拥有1到n个角色,因此它使用this->has_many_and_belongs_to

答案 1 :(得分:0)

如您所见,role返回一个数组,因此您必须像数组一样访问它

访问它的正确方法是

$用户>作用[0] - >编号