首页 > 解决方案 > 使用具有不同模型的数据透视表

问题描述

我有以下型号:

现在每个用户都与枢轴有belongsToMany关系:Item

    public function items()
    {
        return $this->belongsToMany(Item::class)
            ->withPivot('value');
    }

这是 的结构item

Item

例子

User

现在它变得很棘手:我也想User在模型中使用UserGroup- 每个都User应该有很多Items 和一个的数据透视表,这与数据透视表不同Item,当它是User.

例子

UserGroup

我的方法

所以我认为,唯一可能的解决方案是创建一个类似于 (extended from ) 的新模型,它与( UserGroupUserextended from User) 有关系。UserGroupUserItemsItem

但也许有更聪明的方法来做到这一点?

标签: laraveleloquentlaravel-6

解决方案


您可以像这样在 User 组上创建 users() 方法:

class UserGroup extends Model
{
    public function users()
    {
        return $this->hasMany(User::class);
    }
}

// Then to retrieve your data:
$groups = UserGroup::with('users.items')->get();
dd($groups);

推荐阅读