2015-09-09 44 views
0

你好,我刚刚意识到我是如何非常困惑,我是由这些关系,我有一个问题,我需要问。假设我有两个记录表。雄辩的表关系

角色

Administrator 
Manager 
Employee 

用户

User 1 
User 2 
User 3 

现在我想创建这两个表之间的关系,在这种情况下,每个用户只能有一个角色,但我如何表达这种关系?

更具体的是,用户行在表中只能有一个角色或users表作为一个整体吗?

如果用户表作为一个整体只能有一个角色,然后在一个情况下用户1用户2都是管理员会的关系则成为多对多

+0

这是在Laravel? –

+0

是的,请取悦。 – user3718908

回答

1

你可以通过查看在Laravel /口才关系的文件开始:http://laravel.com/docs/5.1/eloquent-relationships

你的班会是这个样子:

class User extends Model 
{ 
    public function role() 
    { 
     return $this->hasOne('App\Role'); 
    } 
} 

class Role extends Model 
{ 
} 

这意味着每个User有一个Role - 它不”防止相同的角色从属于多个用户。

1

我似乎会成为。

榜样

public function users() 
{ 
    return $this->hasMany('App\User'); 
} 

用户模型

public function role() 
{ 
    return $this->belongsTo('App\Role'); 
} 

这样的手段,一个角色可以有很多的用户和用户所属的作用。

因此User1和User2都可以是管理员。关于关系的其他信息,请查看 laracast

1

我认为,在角色 - 用户reations中使用ManyToMany会更好,因为如果现在想为一个用户使用一个角色,将来可能需要为用户提供多个角色给用户。此外,ManyToMany并不比一对多更慢,但它更有力的决定。

榜样

​​

用户模型

public function role() 
{ 
    return $this->belongsToMany('App\Role'); 
}