php - Laravel Pivot - 通过相关模型获得相同的模型
问题描述
我有一个这样的表设置,其中已经设置了枢轴关系。
users colonies colony_user
.----.-------. .----.------. .-----------.---------.
| id | name | | id | name | | colony_id | user_id |
'----+-------' '----+------' '-----------+---------+
| 1 | steve | | 1 | col1 | | 1 | 1 |
| 2 | kate | | 2 | col2 | | 1 | 2 |
| 3 | sven | '----'------' | 2 | 1 |
'----'-------' | 2 | 3 |
'-----------'---------'
// User Model
public function colonies()
{
return $this->belongsToMany(Colony::class);
}
// Colony Model
public function users()
{
return $this->belongsToMany(User::class);
}
我可以通过雄辩的关系从用户那里获得所有殖民地,反之亦然。示例:$user->colonies()->get()
或$colony->users()->get()
。我想得到的是来自我所在的同一个殖民地的其他用户。
提供该表后,如果我是user_id=1
,我想同时获得 user 2
,3
因为 user2
是我来自 Colony 的同事和来自 Colony的1
user 。3
2
我在想这样的事情,$user->colonies()->users()->where('id', '<>', $user->id)->get()
但无济于事。
希望任何人都可以提供帮助,这真的让我很头疼:(
抱歉标题令人困惑,不是以英语为母语的人。
解决方案
您可能需要为您所属的每个殖民地急切加载用户:
$user->colonies()->with(['users' => function ($q) use ($user) {
$q->whereKeyNot($user->id);
}])->get();
然后,您将遍历殖民地并可以访问所有用户。
推荐阅读
- azure - IDX10503:Microsoft Graph 和 Azure AD 的签名验证失败
- javascript - jquery函数销毁滚动事件
- javascript - react-redux:无法读取未定义的属性“isLogin”
- android - RecyclerView 按位置获取视图
- python - CNTK 在动态轴上的聚集操作
- javascript - 如何在数据表中使用 Rowspan
- android - 如何从 Firebase 中删除推送值
- java - Elasticsearch 无法使用 Java API 查询获取超过 10 个文档
- c# - 在报告进度的同时等待异步文件上传完成
- c# - 如何在两个字符串之间删除和添加字符串