拉拉韦式的一对一或一对多关系


laravel relationship one to one or one to many?

表1(用户):

id    username   password  role created_at updated_at
1      jhon        yz        1   sometime     sometime

表2(角色):

id     role     created_at   updated_at
1    employee     sometime    sometime

我想要什么

id    username   password  role     created_at updated_at
1      jhon        yz     employee   sometime     sometime

用户模型:

class User extends Eloquent implements UserInterface, RemindableInterface {
    public function role()
    {
        return $this->hasOne('role', 'id', 'role');
    }
    protected $table = 'users';
    protected $hidden = array('password', 'remember_token');    
}

角色模型:

class Role extends Eloquent {
    protected $table = 'roles'; 
}

如何在视图中获取角色名称?我的关系正确吗

一个角色可以被许多用户使用,例如:

user1可以是管理员user2也可以是管理员user3是经理user4也是管理员

如果是这样的话,。。

用户型号:

    class User extends Eloquent implements UserInterface, RemindableInterface {
        protected $table = 'users';
        protected $hidden = array('password', 'remember_token');
        public function role()
        {
            return $this->belongsTo('Role');
        }
    }

角色模型:

class Role extends Eloquent {
    protected $table = 'roles';
    public function users()
    {
        return $this->hasMany('User');
    }
}

然后使用:

User::with('role')->whereRole(1)->get(); // assuming that 1 = employee; this is eager loading

这将产生类似于:

[
    new User([
       'id' => 1,
       'username' => 'blahblah',
       'password' => 'pass',
       'role' => 1,
       'created_at' => '0000-00-00',
       'updated_at' => '0000-00-00',
       'role' => new Role([
                    'id' => 1,
                    'role' => 'employee',
                    'created_at' => '0000-00-00',
                    'updated_at' => '0000-00-00'
                 ])
    ])
]