我繼承4 MySQL表:雄辯belongsToMany withPivot映射
上市
-id
-description
...
位置
-id
-listing_id
導軌
-id
-name
....
guide_location
-id
-guide_id
-location_id
清單=>(許多)的地點
指南=>(許多)地點=>(1)代碼
列表,位置和指南在Laravel Dingo應用程序中都是它自己的模型。這裏的設置:
//Listing model
public function locations()
{
return $this->hasMany('Location');
}
然後
//Location model
public function guides()
{
return $this->belongsToMany('Guide');
}
public function listing()
{
return $this->belongsTo('Listing');
}
而且
//Guide model
public function locations()
{
return $this->belongsToMany('Location');
}
我添加了一個列guide_location,我想返回,當我從選擇指南數據庫。
所以現在:
guide_location
-id
-guide_id
-location_id
- 位
我嘗試添加->withPivot('position')
的指南和車型定位在兩個belongsToMany()
聲明但它不起作用,我沒有看到新的專欄。
任何想法我做錯了什麼?
我有點困惑,如果你剛剛添加了一列,爲什麼你需要轉到另一個表?或者,您是否已經引入了第5個表格,並且當您查詢返回'指南位置「的'指南'時,您還希望'指南位置'返回其位置關係的結果' ? – Ohgodwhy
也許withPivot不是我需要的命令?從[文檔](https:// laravel。com/docs/5.1/eloquent-relationships),它暗示這是拉入這個其他值的唯一方法,除非我誤讀它 - 「默認情況下,只有模型鍵將出現在透視對象上。表包含額外的屬性,您必須在定義關係時指定它們:「 – OrdinaryHuman
只有在使用數據透視表時纔會發生這種情況,但在這種情況下,'guide_location'不是數據透視表,也不是甚至多形態,它只是有很多限制。如果我查詢'$ guide = Guide :: find($ id) - > with('guide_location');'我希望在我的返回中看到一個'position'列,給定你上面提供的代碼。你實際上是否有一個你想通過'guide_location'表加入的'position'表? – Ohgodwhy