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

时间:2016-09-24 12:53:31

标签: php laravel laravel-5

我有一个场景,我正在尝试验证新的联系人可以添加多个电子邮件地址 - 但是每个联系人只能拥有某个电子邮件地址类型。

即。我想使用多个电子邮件地址创建通讯录,但他们必须拥有电子邮件地址,其中包含电子邮件地址类型'工作'。他们可以拥有零个电子邮件地址或多个,但总是(且只有)一个工作电子邮件地址。

我的模特如下。请注意,电子邮件地址可以与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。关于从哪里开始的任何指针都会很棒。

由于

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
}

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