Laravel与许多人有很多关系

时间:2015-06-22 14:22:29

标签: php laravel laravel-4

状态更新

我已将变形实现为多种关系类型,但如何插入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);

我应该手动执行附件还是应该在代码中添加一些额外的参数?

1 个答案:

答案 0 :(得分:1)

根据您的要求,我不得不更新您与多态关系的关系。 而不是访问其他属性尝试其中一个方法。

$user->roles()->attach(1, ['expires' => $expires]); 
$user->roles()->sync([1 => ['expires' => true]]); 
User::find(1)->roles()->save($role, ['expires' => $expires]);

如果你仍然面临一些困难来处理这个要求,请告诉我。