状态更新
我已将变形实现为多种关系类型,但如何插入addition
字段?
多态关系的代码是:
public function mailmessages()
{
return $this->morphToMany('Mailmessage','rel','mailmessage_rels','rel_id','mailmessage_rel_id')
->withPivot(['addition']);
}
原帖
我有一个使用多对多关系的Laravel项目,在数据透视表中我有另外一个描述相关模型的字段。
例如,我有这个邮件消息模型,这是关系表mailmessage_rels
这是一个简短的概述:
+--------------------+------------------+
| Field | Type |
+--------------------+------------------+
| id | int(10) unsigned |
| mailmessage_rel_id | int(10) unsigned |
| rel_id | varchar(36) |
| rel_type | varchar(36) |
| addition | varchar(255) |
+--------------------+------------------+
假设我有一个联系模式。在这个联系模型中,我有mailmessages
关系。
public function mailmessages()
{
return $this->belongsToMany('Mailmessage','mailmessage_rels','rel_id','mailmessage_rel_id')
->wherePivot('rel_type','Contact')
->withPivot(['addition']);
}
当我检索信息时,一切都很好,但是当我尝试创建一个关系(使用attach)时,它不会写出实际上不是我想要的rel_type
字段。我简单地使用:
$contact->mailmessages()->attach($message);
我应该手动执行附件还是应该在代码中添加一些额外的参数?
答案 0 :(得分:1)
根据您的要求,我不得不更新您与多态关系的关系。 而不是访问其他属性尝试其中一个方法。
$user->roles()->attach(1, ['expires' => $expires]);
$user->roles()->sync([1 => ['expires' => true]]);
User::find(1)->roles()->save($role, ['expires' => $expires]);
如果你仍然面临一些困难来处理这个要求,请告诉我。