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