我在尝试建立表之间的关系时遇到了麻烦。
- courses
|- id
|- title
- sessions
|- id
|- course_id
|- title
- users
|-id
|- name
- user_roles
|- user_id
|- course_id
我能够显示给定课程的所有会话以及为给定会话注册的所有用户。我还想展示用户角色。由于我可以为任何给定的课程设置任意数量的会话,因此我的数据透视表只有course_id
和user_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');
}
答案 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