laravel - Laravel 数据透视表,获取属于用户的房间
问题描述
我的数据透视表的结构是
room_id - user_id
我有 2 个用户存在于同一个房间中。
我怎样才能得到他们两个共同的房间?
最好创建一个静态类来拥有这样的东西。
Room::commonToUsers([1, 5]);
潜在地我可以检查更多的用户,所以逻辑不能限制到一定数量的用户。
Room::commonToUsers([1, 5, 6, 33, ...]);
解决方案
我不知道你的亲戚的名字,但我想你可以这样做:
$usersIds = [1, 5];
$rooms = Room::whereHas('users', function($query) use ($usersIds) {
foreach ($usersIds as $userId) {
$query->where('users.id', $userId);
}
})->get();
它应该工作。whereHas
允许您查询您的关系。如果需要静态方法,可以在模型中添加方法。
推荐阅读
- postgresql - 如何使用hibernate从表中删除表引用在另一个表中的记录
- r - R 使用 dplyr 改变新行
- c++ - C++ W:使用子线程的运行映像
- c# - 如何通过给定的点集合确定形状是半圆?
- sas - 在 sas 中将 ddmmyy 日期转换为日期时间
- java - Jdbctemplate queryforObject .IncorrectResultSizeDataAccessException:不正确的结果大小:预期 1,实际 10
- c# - 如何在没有正确索引的情况下发送数组/列表的表单值?
- xml - 如何在xslt中处理不同的相同节点
- python - 通过自定义聚合功能提高 pandas groupby 的效率
- asp.net - 如何从链接的 DLL 中引用 Request 对象?