Laravel 4 Laravel雄辩-多对多,数据透视表在哪里

Laravel 4 Laravel雄辩-多对多,数据透视表在哪里,laravel-4,eloquent,Laravel 4,Eloquent,我想看看做以下事情的最佳方法是什么 我有3个表:用户、项目和项目用户 users和items表是非常通用的,id和一些列可以保存任何数据 item_用户表具有以下结构 id 项目标识 用户id 用户类型[1-所有者| 2-追随者| 3-其他内容] 关系: 每个项目有一个所有者(用户类型) 每个项目都有许多追随者 每个用户可以拥有许多项目 每个用户可以跟踪许多项目 我希望所有者和追随者是Users表,这样我就不需要复制用户数据。我创建了一个包含item_id、user_id和user_type的透

我想看看做以下事情的最佳方法是什么

我有3个表:用户、项目和项目用户

users和items表是非常通用的,id和一些列可以保存任何数据

item_用户表具有以下结构 id
项目标识
用户id
用户类型[1-所有者| 2-追随者| 3-其他内容]

关系: 每个项目有一个所有者(用户类型)
每个项目都有许多追随者
每个用户可以拥有许多项目
每个用户可以跟踪许多项目

我希望所有者和追随者是Users表,这样我就不需要复制用户数据。我创建了一个包含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');
}
用户模型如下所示:

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');
}

谢谢

您只需将条件附加到您的
belongTomany
声明中即可:

public function user() {
    return $this->belongsToMany('Users')->where('user_type', 1);
}
这将仅返回透视表中具有
User\u type=1
User
条目。为了更清楚,您可以将方法命名为
owner()
,而不是
user()
,以反映添加的条件