我有2个表格,例如#34; User"和"课程"。 我想要选择已通过两门课程的用户。
user
id username
1 John
2 Jane
courses
id name user_id
1 course-1 1
2 course-2 1
3 course-1 2
我用:
(new User)->join('courses', 'courses.user_id', '=', 'user.id')
->whereIn('courses.name', ['course-1','course-2'])
但是这个查询返回2个用户而不是1(只有john)。我想在哪里返回AND连接而不是OR连接。
我想这样:
SELECT * from user
join courses as c1 on c1.user_id = user.id
join courses as c2 on c2.user_id = user.id
where c1.name = 'course-1' and c2.name = 'course-2'
它将如何在Laravel?
答案 0 :(得分:0)
使用此:
User::join('courses as c1', 'c1.user_id', '=', 'user.id')
->join('courses as c2', 'c2.user_id', '=', 'user.id')
->where('c1.name', 'course-1')
->where('c2.name', 'course-2')
顺便说一句:你应该使用Eloquent relationships来解决这个问题。