提问者:小点点

具有3个关系的Laravel数据透视表


我试图找出如何使用具有三种不同关系的透视表来建立我的关系。

users
- id
- username

products
- id
- name

tags
- id
- user_id
- name

user_products
- user_id
- tag_id
- product_id

当使用“产品”模型时,我希望能够提取所有相关的标签。我目前能够拉取“user\u products”对象,但我想知道如何取而代之地拉取实际的标记对象。

模型:

class User {
    public function tags()
    {
        return $this->hasMany('UserTag');
    }
}

class Product  {

    public function user()
    {
        return $this->belongsTo('User','user_products','product_id','user_id');
    }

    public function tags()
    {
        ????
    }
}

共1个答案

匿名用户

return $this->belongsTo('User','user_products','product_id','user_id')
->withPivot('tag_id')
->join('tags', 'tags.id', '=', 'user_products.tag_id')
->select(...);

像这样的东西应该工作正常。