Laravel 5.0表单验证每个关系唯一

时间:2019-04-29 09:15:47

标签: php laravel

我有一个模型Mailgroup,它与“个人”具有一对多关系。

现在,当我创建一个新的个人时,我想确保该个人在该特定邮件组中是唯一的。

在表单验证中,我这样做:

'individual_email' => 'required|unique:individuals|max:255',

这很好,但是它会检查整个数据库,因此如果该个人存在1个邮件组,则会说它已经在使用中。

现在,我阅读了laravel文档,您可以像这样在验证中添加子句:

  

'email'=>'唯一的:用户,电子邮件地址,NULL,id,帐户ID,1'

     

在上述规则中,唯一检查中将仅包含account_id为1的行。

所以我想将规则更改为以下内容:

'individual_email' => 'required|unique:individuals,individual_email,NULL,id,mailgroup_id,'.$data['mailgroup_id'].'|max:255'

但是问题是如何访问表单发布数据?因为无法识别$ data。

2 个答案:

答案 0 :(得分:1)

通过Request类进行此操作:

use Illuminate\Validation\Rule;

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
    return [
        'individual_email' => [
            'required',
            Rule::unique('individuals', 'individual_email')
               ->where('mailgroup_id', $this->get('mailgroup_id')),
        ]
    ];
}

答案 1 :(得分:1)

尝试以下:

'individual_email' => 'required|unique:individuals,individual_email,NULL,id,mailgroup_id,'.$this->get('mailgroup_id').'|max:255'