如何在数据透视表上获取值

时间:2016-04-02 19:00:07

标签: laravel laravel-5

我是Laravel的绝对初学者。

我想在数据透视表或"role_id"上获取"admin",但我不知道如何操作。我想建立一个系统,根据用户的角色显示不同的界面。因此,我想通过在数据透视表上获取admin来区分用户instructoruser"role_id"

任何建议都将受到赞赏。

Users.php

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

Roles.php

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

角色表:

1|admin|2016-04-02 16:51:25|2016-04-02 16:51:25
2|instructor|2016-04-02 16:51:25|2016-04-02 16:51:25
3|student|2016-04-02 16:51:25|2016-04-02 16:51:25

我想在数据透视表上获取role_id。 我可以使用代码" \ Auth :: User() - >角色"

获取下表
{
"id": "1",
"name": "admin",
"created_at": "2016-04-02 16:51:25",
"updated_at": "2016-04-02 16:51:25",

 "pivot": {
     "user_id": "1",
     "role_id": "1",
     "created_at": "2016-04-02 16:54:06",
     "updated_at": "2016-04-02 16:54:06"
  }

}

1 个答案:

答案 0 :(得分:1)

我查看了我的角色设置,您需要在Roles.php

中的代码后添加以下代码
public function hasRole($name)
{
    foreach ($this->roles as $role)
    {
        if ($role->name == $name) return true;
    } 
    return false;
}

public function assignRole($role)
{
    return $this->roles()->attach($role);
}

public function removeRole($role)
{
    return $this->roles()->detach($role);
}

hasRole检查角色assignRoleremoveRole以添加和删除角色。

对于测试,您可以执行类似

的操作
if ($user->hasRole('student')) return "you are in student group"