小编Sam*_*lor的帖子

在数据透视表上使用 hasManyThrough 检索相关模型 - Laravel 5.7

我正在尝试从数据透视表中检索相同类型的相关模型。

我有 2 个模型App\Models\UserApp\Models\Group一个枢轴模型App\Pivots\GroupUser

我的表具有以下结构

用户

  • ID

团体

  • ID

组用户

  • ID
  • 用户身份
  • 组ID

我目前将关系定义为

在应用程序/模型/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)

laravel eloquent laravel-5 laravel-5.7

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

eloquent ×1

laravel ×1

laravel-5 ×1

laravel-5.7 ×1