我试着看看做下面的事情最好的方法是什么。
我有3个表:users、items和item_user。
users和items表非常通用,id和几列来保存任何数据。
item_user表具有以下结构ID
item_id
user_id
user_type[1-所有者2-追随者3-其他内容]
关系:每个项目有一个所有者(用户类型)
每个项目有许多追随者
每个用户可以拥有许多项目
每个用户可以追随许多项目
我希望所有者和追随者是用户表,这样我就不需要复制用户数据。我创建了一个item_id、user_id和user_type的透视表来保存这些关系。
所以问题是我如何做到这一点,拉拉维尔雄辩?
项模型如下所示:
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');
}
谢谢!
您只需将条件附加到belomstomany
声明:
public function user() {
return $this->belongsToMany('Users')->where('user_type', 1);
}
这将只返回透视表中user_type=1
的user
条目。为了更加清楚,您可以将方法命名为owner()
,而不是user()
,以反映添加的条件。