首页 > 解决方案 > Laravel 数据透视表,获取属于用户的房间

问题描述

我的数据透视表的结构是

room_id - user_id

我有 2 个用户存在于同一个房间中。

我怎样才能得到他们两个共同的房间?

最好创建一个静态类来拥有这样的东西。

Room::commonToUsers([1, 5]);

潜在地我可以检查更多的用户,所以逻辑不能限制到一定数量的用户。

Room::commonToUsers([1, 5, 6, 33, ...]);

标签: laraveleloquent

解决方案


我不知道你的亲戚的名字,但我想你可以这样做:

$usersIds = [1, 5];
$rooms = Room::whereHas('users', function($query) use ($usersIds) {
      foreach ($usersIds as $userId) {
          $query->where('users.id', $userId);
      }
})->get();

它应该工作。whereHas允许您查询您的关系。如果需要静态方法,可以在模型中添加方法。


推荐阅读