1

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

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

4

2 回答 2

0

看看这个:http: //vespakoen.github.com/authority-laravel/

它是 laravel 的 ACL 授权包。一个用户可以有 1 到 n 个角色,所以它使用this->has_many_and_belongs_to.

于 2013-03-22T14:24:04.160 回答
0

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

访问它的正确方法是

$user->角色[0]->id

于 2013-04-28T21:31:30.803 回答