我怎样才能获得多个雄辩的关系?

时间:2016-04-19 03:23:17

标签: eloquent laravel-5.2

我在尝试建立表之间的关系时遇到了麻烦。

- courses
    |- id
    |- title
- sessions
    |- id
    |- course_id
    |- title
- users
    |-id
    |- name
- user_roles
    |- user_id
    |- course_id

我能够显示给定课程的所有会话以及为给定会话注册的所有用户。我还想展示用户角色。由于我可以为任何给定的课程设置任意数量的会话,因此我的数据透视表只有course_iduser_id列。

当我访问这样的网址时:mysite.com/sessions/1我想显示会话的当前用户。它看起来像这样:

"My Course"
    "Session One"
        "John Doe"
            "Admin"
        "Jane Doe"
            "Editor"
            "Contributor"
        "Name"
           "Foo"

来自CodeIgniter,我只需传入课程ID和用户ID即可找到相应的角色。这就是我90%的工作。

Course.php

public function sessions()
{
    return $this->hasMany(Session::class);
}

session.php文件

public function course()
{
    return $this->belongsTo(Course::class);
}

user.php的

public function user()
{
    return $this->belongsTo(Course::class);
}

public function roles()
{
    return $this->hasMany(Role::class);
}

Role.php

public function user()
{
    return $this->belongsToMany(User::class, 'user_roles');
}

1 个答案:

答案 0 :(得分:0)

以下是示例关系

<强> Courses.php

//means course has many sessions
public function sessions(){
    return $this->hasMany('App\Sessions','course_id', 'id');
}

//course user
public function course_user(){
    return $this->belongsToMany('App\Course', 'user_roles', 'user_id', 'course_id');
}

<强> Sessions.php

//means Session belongs to course
public function sessions(){
    return $this->belongsTo('App\Course','course_id', 'id');
}

<强> user.php的

public function sessions(){
    return $this->belongsTo('App\Course','course_id', 'id');
}
//user courses
public function user_course(){
    return $this->belongsToMany('App\User','user_roles','courses_id', 'user_id');
}

注意:如果您需要用户角色管理系统,那么最好安装和配置Zizaco Entrust软件包,而不是手动更好。 Entrust Package