我正在尝试从数据透视表中检索相同类型的相关模型。
我有 2 个模型App\Models\User和App\Models\Group一个枢轴模型App\Pivots\GroupUser
我的表具有以下结构
用户
团体
组用户
我目前将关系定义为
在应用程序/模型/User.php
public function groups()
{
return $this->belongsToMany(Group::class)->using(GroupUser::class);
}
Run Code Online (Sandbox Code Playgroud)
在应用程序/模型/Group.php
public function users()
{
return $this->belongsToMany(User::class)->using(GroupUser::class);
}
Run Code Online (Sandbox Code Playgroud)
在应用程序/Pivots/GroupUser.php
public function user()
{
return $this->belongsTo(User::class);
}
public function group()
{
return $this->belongsTo(Group::class);
}
Run Code Online (Sandbox Code Playgroud)
我试图在我的User班级中定义一个关系,以访问同一组中相关的所有其他用户。呼唤着它friends。到目前为止我已经尝试过这个:
应用程序/模型/User.php
public function friends()
{
return $this->hasManyThrough(
User::class,
GroupUser::class,
'user_id',
'id'
);
}
Run Code Online (Sandbox Code Playgroud)
但它最终只是返回一个集合,其中仅包含我调用关系的用户。(与运行相同collect($this);
我有一个可行的解决方案,但并不理想。
应用程序/模型/User.php
public function friends()
{
$friends = collect();
foreach($this->groups …Run Code Online (Sandbox Code Playgroud)