我正在尝试了解以下内容的最佳方式。
我有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');
}
谢谢!
答案 0 :(得分:0)
您可以将条件附加到belongsToMany
声明:
public function user() {
return $this->belongsToMany('Users')->where('user_type', 1);
}
这将只返回数据透视表中User
的{{1}}条目。为了更清楚,您可以将方法user_type = 1
命名为owner()
而不是user()
来反映添加的条件。