我有两个表:bookings(id,lessons_id,user_id,permit_id)
lessons(id,name,date)
我需要选择所有课程,其中user_id <>$user
我已经完成了以下工作,但并不完全正确。
$user = Auth::id();
$lesson = DB::table('lessons')
->whereNotExists(function ($query) {
$query->select(DB::raw(1))
->from('bookings')
->whereRaw('bookings.lessons_id', '=', 'lessons.id')
->where(' bookings.user_id',' <>', '$user');
})
->get();
最佳答案
尝试使用whereNotExists
函数:
DB::table('lessons')
->whereNotExists(function ($query) {
$query->select(DB::raw(1))
->from('bookings')
->whereRaw('bookings.lessons_id = lessons.id AND
bookings.user_id = ?', [$user]);
})
->get();
这将对应于以下原始MySQL查询:
SELECT *
FROM lessons t
WHERE NOT EXISTS (SELECT 1 FROM bookings b
WHERE b.lessons_id = t.id AND b.user_id = 2);
关于mysql - 获取不同的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49665420/