Laravel Query Builder выбирает ту же таблицу в том же столбце с другим условием - PullRequest
0 голосов
/ 15 мая 2018

У меня есть 2 таблицы, например "Пользователь" и "Курсы".Я хочу выбрать пользователей, которые прошли два курса.

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 (только Джон).Я хочу, чтобы при возврате И соединение не ИЛИ соединение.

Я хочу вот так:

 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?

1 Ответ

0 голосов
/ 15 мая 2018

Используйте это:

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

Кстати: вы должны использовать Красноречивые отношения для подобных ситуаций.

...