【问题标题】:Laravel Eloquent get multiple record with same foreign keyLaravel Eloquent 获取具有相同外键的多条记录
【发布时间】:2016-10-27 12:45:23
【问题描述】:

我有 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,但我想在participate 表中找到与user_ID 共享的room_id。例如,我有user_id: 1user_id: 2 并且想要共享room_id 1。我已经通过 user_id 过滤了参与模型,但我不知道找到 room_id。

谢谢

【问题讨论】:

  • 向我们展示您已经尝试过的内容。
  • 您是否为您的房间和用户表定义了 eloquent 模型?
  • @MubasharAbbas $rooms = Participate::Where('user_id',Auth::user()->id) ->orWhere('user_id', $request->to) ->get();
  • @jedrzej.kurylo 我将我的代码添加到了commens。
  • 我不明白这个问题。

标签: php mysql laravel eloquent foreign-keys


【解决方案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();

【讨论】:

  • 谢谢,$secondUserID 在哪里。你忘了它。我想分享room ID $firstUserId$secondUserId
  • 如何在仅检索 2 条记录时接受过滤器,不超过 3 条。意思是,如果获取 3 条记录并且有 3 条记录,我不想显示房间 ID。这个怎么办?这是额外的问题
  • 我再次重新编辑,向您展示如何获取用户 ID 的动态数字。
  • 不,我想你不明白我的意思。例如,我有user_id 12,13,14 输入room_id: 1,这样我不想显示room _id。但如果我有user_id 18,19 输入room_id: 3,那就接受并告诉我。
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 2017-06-15
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2016-08-04
  • 2021-09-23
相关资源
最近更新 更多