Laravel Eloquent 获取具有相同外键的多条记录
Laravel Eloquent get multiple record with same foreign key
我有 3 个 table:
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
,但我想在 participate
table 中找到与 user_IDs 共享的 room_id
。例如,我有 user_id: 1
& user_id: 2
并希望共享 room_id 1
。我已经通过 user_id
过滤参与模型,但我不知道要找到 room_id.
谢谢
您可以尝试创建这样的查询:
$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();
我有 3 个 table:
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
,但我想在 participate
table 中找到与 user_IDs 共享的 room_id
。例如,我有 user_id: 1
& user_id: 2
并希望共享 room_id 1
。我已经通过 user_id
过滤参与模型,但我不知道要找到 room_id.
谢谢
您可以尝试创建这样的查询:
$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();