Laravel Pivot - 通过相关模型获取相同模型

Laravel Pivot - Getting same model through related model

我有一个像这样的 table 设置,其中已经设置了枢轴关系。

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);
    }

我可以通过 eloquent 关系从用户那里获得所有殖民地,反之亦然。 示例:$user->colonies()->get()$colony->users()->get()。 不过,我想得到的是来自我所参与的同一殖民地的其他用户。

有了 table,如果我是 user_id=1,我想同时获得用户 23,因为用户 2 是我的同事来自群体 1 和来自群体 2.

的用户 3

我在想这样的事情$user->colonies()->users()->where('id', '<>', $user->id)->get()但是没有用。

希望大家帮帮忙,这真让我头疼:(

抱歉标题混乱,母语不是英语。

您可能需要为您所属的每个殖民地预先加载用户:

$user->colonies()->with(['users' => function ($q) use ($user) {
    $q->whereKeyNot($user->id);
}])->get();

然后您将遍历殖民地并可以访问所有用户。