2013-11-04 87 views
0

我遇到了Laravel 4和「多對多」查詢關係的問題。 我有四個表:Laravel 4:多對多多關係

  1. 用戶
  2. 需求
  3. 貨幣
  4. user_needs

User_Needs包含了 「多對多」 用戶和需求之間的關係。描述如下

id - user_id - need_id - currency_id - price 

ID是自動增量,PK等等... user_ID的是FK爲用戶表,need_id是FK的需求表,currency_id是FK的當然Currency表。價格是一個浮動。

內Laravel 4個Models文件夾我創建了以下型號

用戶與示範類文件中的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它會沒有中間模型的解決方案成爲格柵

感謝您的幫助。

回答

1

當試圖將角色分配給用戶/項目關係時,我遇到過這樣的情況。

您的currency_id應該只是user_needs數據透視表中的另一列,因爲是關係的屬性。 (如你所知)。

使用user_needs表中的currency_id列更新您的「withPivot」以包含currency_id,並且您將在查詢用戶需求關係時獲得所需的全部數據。

編輯:您也可以通過使用相同的user_needs表並在定義關係時指定所有內容來執行貨幣belongsToMany用戶關係。

// in currency model 

return $this->belongsToMany('User', 'user_needs', 'user_id', 'currency_id'); 
+0

似乎很酷的解決方案我現在要試一試。 –