对象Page
具有任意数量的Widgets
,每个Page-Widget
对都有特殊选项(例如,位置,自定义标题)。
我刚刚做了
class Page extends Model {
public function widgets(){
return $this->belongsToMany('App\Widget');
}
}
...
class Widget extends Model {
}
我向page_widget
表添加了更多列(位置,设置......)。
我如何通过$page->widget->position
访问/更新它们?我还需要能够获取按position
排序的页面小部件。
请建议模型关系。感谢。
答案 0 :(得分:2)
您可以添加以下额外字段:
class Page extends Model {
public function widgets(){
return $this->belongsToMany('App\Widget')->withPivot('position', 'settings);
}
}
然后,要在db中创建该行,请执行以下操作:
$page->widgets()->attach($widgetId, ['position' => $position, 'settings' => $settings]);
要访问数据透视表中的数据,您可以执行以下操作:
foreach ($page->widgets as $widget) {
echo $widget->pivot->position;
echo $widget->pivot->settings;
}
官方文档中有很多信息:https://laravel.com/docs/5.2/eloquent-relationships#many-to-many