我继承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