Laravel Eloquent - 很多人都可以使用数据透视表

时间:2014-10-17 15:05:44

标签: laravel-4 eloquent

我正在尝试了解以下内容的最佳方式。

我有3个表:users,items和item_user。

用户和项目表非常通用,id和几个列来保存任何数据。

item_user表具有以下结构 ID
ITEM_ID
USER_ID
user_type [1 - 所有者| 2 - 追随者| 3 - 其他东西]

关系: 每个项目有1个所有者(用户类型)
每个项目都有很多粉丝 每个用户可拥有多个项目
每个用户都可以关注多个项目

我希望Owner和Followers成为Users表,这样我就不需要复制用户数据了。我创建了一个包含item_id,user_id和user_type的数据透视表来保存这些关系。

所以问题是如何在Laravel Eloquent中这样做?

项目模型如下:

public function user() {
    return $this->belongsToMany('Users');
    // This isn't actually correct since it belongs to only one User but not sure how to specify a where user_type = 1;
    // return $this->belongsTo('User');
}

用户模型如下:

public function item() {
    return $this->hasMany('Item');
}

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将条件附加到belongsToMany声明:

public function user() {
    return $this->belongsToMany('Users')->where('user_type', 1);
}

这将只返回数据透视表中User的{​​{1}}条目。为了更清楚,您可以将方法user_type = 1命名为owner()而不是user()来反映添加的条件。