【发布时间】:2016-08-21 16:27:30
【问题描述】:
假设我有一个像这样的Course 模型:
class Course extends Model
{
public function users ()
{
return $this->belongsToMany('App\User', 'course_user', 'course_id', 'user_id');
}
public function lessons ()
{
return $this->hasMany('App\Lesson', 'course_id', 'course_id');
}
}
Course 字段是:
course_id
title
每门课程可以有多个课程。
Lesson 模型是这样的:
class Lesson extends Model
{
public function course ()
{
return $this->belongsTo('App\Course', 'course_id', 'course_id');
}
public function users ()
{
return $this->belongsToMany('App\User', 'lesson_user', 'lesson_id', 'user_id');
}
}
它的字段是:
lesson_id
title
course_id
如您所见,Course 和 Lesson 之间存在 OneToMany 关系,User 和 Course 之间存在 ManyToMany 关系。
User 和 Course 名为 ~course_user` 的数据透视表有这些字段:
course_id
user_id
另一方面,User 和 Lesson 之间存在多对多关系。那些名为lesson_user 并具有以下字段的数据透视表:
lesson_id
user_id
passed
passed 字段显示用户在课程中的状态。如果为0,表示用户还没有通过,否则他通过了。
User 模型是这样的:
class User extends Model
{
public function lessons()
{
return $this->belongsToMany('App\Lesson', 'lesson_user', 'user_id', 'lesson_id')
}
public function courses ()
{
return $this->belongsToMany('App\Course', 'course_user', 'user_id', 'course_id');
}
}
现在我想通过最佳方式(例如嵌套 where 子句)获取用户课程并计算每门课程中通过课程的百分比。
【问题讨论】:
-
请分享您的迁移和虚拟数据,让我们更容易测试