我有两个表 小部件 和 page_widget
PageWidget模型。
protected $fillable = [
'page_id',
'widget_codes',
'created_by',
'updated_by',
'deleted_by',
'deleted_at'
];
relation in this model:
public function widgets() {
return $this->belongsToMany(Widget::class, null, 'page_widget_ids',
'widget_codes');
}
widget模型:
protected $fillable = [
'name',
'code',
'type',
'page_widget_ids',
'created_by',
'deleted_by',
'deleted_at'
];
在存储的时候,我必须同步widget_code,我用了这样的方法。
$pageWidget->widgets()->sync($input['widget_codes']);
这不行,因为在widget模型中,默认的主键被认为是... ... 身份证 列,我想给关系与 编码 专栏
我尝试在部件模型中使用$primaryKey = 'code',但我不能使用这个,因为部件模型的其他关系使用的是 身份证 栏,我有两个表widget和page_widget
当使用多对多关系时,你需要三个表 page_widget
, page_widget_widget
和 widget
.
网页小工具 模型模式应该是这样的
protected $fillable = [
'id',
'created_by',
'updated_by',
'deleted_by',
'deleted_at'
];
小工具 模式图应该是这样的
protected $fillable = [
'name',
'code', //primary_key
'type',
'created_by',
'deleted_by',
'deleted_at'
];
还有 page_widget_widget
表应该有一个 id
, page_widget_id
和 widget_code
列。
之后,将你的关系更新到这个
public function widgets() {
return $this->belongsToMany(Widget::class, 'page_widget_widget', 'page_widget_id', 'widget_code');
}
你的同步功能现在应该可以用了。