如何使用Laravel中的Eloquent为同一两个表创建不同的多对多关系

时间:2014-01-09 13:51:50

标签: php mysql laravel-4 many-to-many eloquent

我有2个表'User'和'Content'。 用户可以喜欢内容,因此我使用数据透视表User_Content来建立用户与他们喜欢的内容之间的多对多关系。 这很好。

用户还可以购买内容。这与上面的关系(User_Content)相同,但数据完全不同。

如何设置这样的关系,其中表之间的关系相同但内容不同 - 可以使用Eloquent在Laravel中成功完成吗? 或者是否有一种完全不同的方式我应该接近这个?

1 个答案:

答案 0 :(得分:1)

只需设置一个user_purchase和user_favorite表,其中包含user_id和content_id字段

然后设置模型

as

class User extends Eloquent{
    public function purchases()
    {
        return $this->belongsToMany('Content','user_purchase');
    }

    public function favorites()
    {
        return $this->belongsToMany('Content','user_favorite');
    }
}

class Content extends Eloquent{

    public function buyers()
    {
        return $this->belongsToMany('User','user_purchase');
    }

    public function favorites()
    {
        return $this->belongsToMany('User','user_favorite');
    }
}

第二列指示要检查多对多关系的表