Laravel Pivot - 通过相关模型获得相同的模型
Posted
技术标签:
【中文标题】Laravel Pivot - 通过相关模型获得相同的模型【英文标题】:Laravel Pivot - Getting same model through related model 【发布时间】:2020-05-25 20:08:58 【问题描述】:我有一个这样的表设置,已经设置了透视关系。
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
,我想同时获得用户2
和3
,因为用户2
是我来自殖民地1
的同事,而用户3
来自殖民地@987654331 @。
我在想这样的事情$user->colonies()->users()->where('id', '<>', $user->id)->get()
,但无济于事。
希望有人能帮忙,这真是让我头疼:(
抱歉标题令人困惑,不是以英语为母语的人。
【问题讨论】:
【参考方案1】:您可能需要为您所属的每个群体预先加载用户:
$user->colonies()->with(['users' => function ($q) use ($user)
$q->whereKeyNot($user->id);
])->get();
然后您将遍历殖民地并可以访问所有用户。
【讨论】:
感谢您的回答。如果我想对我得到的用户进行分页,它会如何工作? 你在向我扔一个曲线球,你没有在问题中提到分页,哈哈。您只是想要一个唯一的用户列表,还是需要按他们的群体对他们进行分组? @scpn 因为结果是一个集合,你可以使用forPage对集合进行分页 @DigitalDrifter 对此感到抱歉。我实际上不需要将它们分组。只是想让他们分页。虽然这应该对我有用,但我会像 Arun 建议的那样手动进行分页。非常感谢!以上是关于Laravel Pivot - 通过相关模型获得相同的模型的主要内容,如果未能解决你的问题,请参考以下文章