Laravel 查询生成器 select 相同 table 具有不同条件的相同列

Laravel Query builder select same table same column with diferent condition

我有 2 个表,例如 "User" 和 "Courses"。 我想要 select 已经通过两门课程的用户。

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'])

但是这个查询 return 2 个用户不是 1 个(只有 john)。我想要 whereIn return AND connection 而不是 OR connection.

我想要这样:

 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会怎样?

使用这个:

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