我有一个场景,我试图验证新的联系人可以有多个电子邮件地址添加到他们-但是,每个联系人只能有一个特定的电子邮件地址类型。
。我想创建联系人与多个电子邮件地址,但他们必须有一个电子邮件地址其中有一个电子邮件地址类型 '工作'。他们可以没有电子邮件地址,也可以有多个,但总是(而且只有)一个工作电子邮件地址。
我的模型如下。注意,电子邮件地址可以与联系人以外的对象相关,因此使用了morphMany。
Contact.php
public function emailaddresses()
{
return $this->morphMany('EmailAddress', 'emailaddressable');
}
EmailAddress.php
public function emailaddressable()
{
return $this->morphTo();
}
public function emailaddresstype()
{
return $this->belongsTo('EmailAddressType', 'email_address_type_id', 'id');
}
EmailAddressType.php
public function emailaddresses()
{
return $this->hasMany('EmailAddress', 'email_address_type_id', 'id');
}
我正在使用Laravel 5.1。如果你能告诉我从哪里开始,那就太好了。
谢谢
例如,在对象模型中创建一个存储电子邮件地址function storeEmail()
的函数。
在其中,检查输入时的电子邮件地址类型。如果您正在使用的模型已经包含该类型的关联电子邮件,则默认为。否则存储给定类型的地址。
function storeEmail($type, $address){
//Check if the type exists within the retrieved object
//If it already exists or if the object is missing a work email, default
//Otherwise add the data to the database for the given object
}
在最初构造模型时,您可以为第一个输入添加所需的工作电子邮件。