在Laravel 5中,验证一个模型只有一种类型的关系


Validate a model has only one type of a relation in Laravel 5

我有一个场景,我试图验证新的联系人可以有多个电子邮件地址添加到他们-但是,每个联系人只能有一个特定的电子邮件地址类型。

。我想创建联系人与多个电子邮件地址,但他们必须有一个电子邮件地址其中有一个电子邮件地址类型 '工作'。他们可以没有电子邮件地址,也可以有多个,但总是(而且只有)一个工作电子邮件地址。

我的模型如下。注意,电子邮件地址可以与联系人以外的对象相关,因此使用了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
}

在最初构造模型时,您可以为第一个输入添加所需的工作电子邮件。