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



我有一个模型邮件组,其中个人具有一对多关系。

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

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

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

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

现在我在 laravel 文档中读到,您可以在验证中添加 clausules 的位置,如下所示:

'email' => 'unique:users,email_address,NULL,id,account_id,1'

在上面的规则中,只有account_id为 1 的行才会包含在唯一检查中。

所以我想将我的规则更改为这样的内容:

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

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

请尝试以下操作:

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

通过请求类执行此操作:

use IlluminateValidationRule;
/**
* 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')),
]
];
}

最新更新