基本上我有属于许多用户的用户。我们可以想象用户之间的友谊关系。
所以我有一个关系的数据透视表,有 2 个用户的 id 和一个附加字段“created_at”。
用户表:id、name
朋友用户表:user_id、friend_id、created_at
在我的用户模型中,我有一个返回用户集合的好友函数:
public function friends() {
return $this->belongsToMany(User::class, 'friend_user', 'user_id', 'friend_id');
}
我的目标是获取用户之间所有关系的列表。使用 User::all() 上的循环,我可以轻松地获得所有这些关系,一个又一个用户:
$users = User::all();
foreach ( $users as $user ) {
foreach ( $user->friends as $friend ) {
return [$user->name . 'is friend with ' . $friend->name];
}
}
但我想让它们按“created_at”排序,而不是关系中的用户。
有没有一种简单的方法可以通过 eloquent 或其他方式来做到这一点?
谢谢你的帮助。