我有3张桌子:
User
------------------
ID
Name
Room
------------------
ID
Subject
Participate
-------------------
ID
room_id
user_id
这是我的样本数据:
user room participate
----------------- ---------------- ---------------------
ID Name ID subject ID room_id user_id
----------------- ---------------- ---------------------
1 john 1 room1 1 1 1
2 sara 2 room2 2 1 2
3 david 3 room3 3 3 3
4 3 2
5 3 1
6 2 1
现在我可以访问user_id
,但我希望找到与room_id
表中的user_ID共享的participate
。例如,我有user_id: 1
& user_id: 2
并希望获得共享room_id 1
。我已经通过user_id
过滤了参与型号,但我不知道找到room_id。
由于
答案 0 :(得分:1)
您可以尝试创建此类查询:
$usersIDs = [$userId, $secondUserId]; //here define user ids how many you want
DB::table('room')->select('room.*')
->join('participate', 'participate.room_id', '=', 'room.id')
->join('user', 'user.id', '=', 'participate.user_id')
->whereIn('user.id', $usersIDs)
->havingRaw('count(user.id) = ?', [count($usersIDs)])
->groupBy('room.id')
->first();