我有一个场景,我正在尝试验证新的联系人可以添加多个电子邮件地址 - 但是每个联系人只能拥有某个电子邮件地址类型。
即。我想使用多个电子邮件地址创建通讯录,但他们必须拥有电子邮件地址,其中包含电子邮件地址类型'工作'。他们可以拥有零个电子邮件地址或多个,但总是(且只有)一个工作电子邮件地址。
我的模特如下。请注意,电子邮件地址可以与Contact之外的对象相关联,因此可以与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。关于从哪里开始的任何指针都会很棒。
由于
答案 0 :(得分:0)
在对象模型中创建一个存储电子邮件地址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
}
最初构建模型时,您可以为第一个输入添加所需的工作电子邮件。