【发布时间】:2016-06-30 10:19:17
【问题描述】:
假设我有users,courses 和course_users 表,用户属于许多课程,透视表course_users 的结构如下:
|用户 ID | course_id |关系类型 |
|------------------------------------- ----------|
现在我有以下代码:
$user = User:find(1);
我在user 模型中有以下功能:
public function courses(){
return $this->belongsToMany('App\Models\Course')->wherePivot('relation_type', 1)->orWherePivot('relation_type', 0)->withPivot('relation_type', 'created_at', 'updated_at');
}
如果我想获取用户的课程:
$user->courses();
但是上面函数的输出查询是这样的:
select
`courses`.*, `course_user`.`user_id` as `pivot_user_id`,`course_user`.`course_id` as `pivot_course_id`,
`course_user`.`relation_type` as `pivot_relation_type`,`course_user`.`created_at` as `pivot_created_at`, `course_user`.`updated_at` as `pivot_updated_at`
from
`courses` inner join `course_user` on `courses`.`id` = `course_user`.`course_id`
where
`course_user`.`user_id` = '1' and `course_user`.`relation_type` = '0' or `course_user`.`relation_type` = '1';
但我需要这样的东西:
select
`courses`.*, `course_user`.`user_id` as `pivot_user_id`, `course_user`.`course_id` as `pivot_course_id`,
`course_user`.`relation_type` as `pivot_relation_type`, `course_user`.`created_at` as `pivot_created_at`, `course_user`.`updated_at` as `pivot_updated_at`
from
`courses` inner join `course_user` on `courses`.`id` = `course_user`.`course_id`
where
`course_user`.`user_id` = '1' and (`course_user`.`relation_type` = '0' or `course_user`.`relation_type` = '1');
区别在于where子句。
【问题讨论】:
标签: php mysql laravel laravel-5 eloquent