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
,我想同时获得用户 2
和 3
,因为用户 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();
然后您将遍历殖民地并可以访问所有用户。
我有一个像这样的 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
,我想同时获得用户 2
和 3
,因为用户 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();
然后您将遍历殖民地并可以访问所有用户。