我对Laravel 4和"多对多"查询关系有问题。我有四个表:
- 用户
- 需要
- 货币
- user_needs
User_Needs包含用户和需求之间的"多对多"关系。 描述如下
id - user_id - need_id - currency_id - price
ID 是自动增量、PK 等...user_id是用户的 FK 表,need_id是需求 FK 表,currency_id当然是货币的 FK 表。价格是浮动的。
在Laravel 4模型文件夹中,我创建了以下模型
在模型类文件中具有属于ToMany函数的用户:
public function needs()
{
return $this->belongsToMany('Need','user_needs','user_id','need_id')->withPivot('price');
}
需要与属于的功能到许多
public function users()
{
return $this->belongsToMany('User','user_needs','user_id','need_id')->withPivot('price');
}
如果我只使用这两个模型,一切正常,问题是我必须添加"currency_id",因为每个用户都可以为每个需求设置货币,我不知道如何更新我的模型来做到这一点。目前,我的货币模型目前没有BelongsToMany,因为我不知道如何实现它。
Laravel文档避免了"如何用多对多连接3个表"的主题,这有点烦人...
编辑:如果可能的话,找到一个没有像UserNeeds这样的中间模型的解决方案,这将是磨碎
的感谢您的帮助。
我在
尝试为用户/项目关系分配角色时遇到过这样的情况。
您的currency_id应该只是user_needs数据透视表中的另一列,因为是关系的属性。 (如你所见)。
使用user_needs表中的currency_id列,更新"withPivot"以包含currency_id,您将拥有查询用户需求关系时所需的所有数据。
编辑:您还可以使用相同的user_needs表并在定义关系时指定所有内容来执行货币属于许多用户关系。
// in currency model
return $this->belongsToMany('User', 'user_needs', 'user_id', 'currency_id');