php - Laravel 5.0 表单验证每个关系唯一
问题描述
我有一个模型邮件组,与个人的一对多关系。
现在,当我创建一个新的个人时,我想确保该个人对于该特定邮件组是唯一的。
在我的表单验证中,我这样做了:
'individual_email' => 'required|unique:individuals|max:255',
这很好用,但它会检查整个数据库,因此如果该个人存在 1 个邮件组,它会说它已经在使用中。
现在我阅读了 laravel 文档,您可以在验证中添加 where 子句,如下所示:
'email' => '唯一:用户,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 无法识别。
解决方案
通过请求类执行此操作:
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')),
]
];
}
推荐阅读
- laravel - 在同一张表中返回父母的孩子时在嵌套循环中遇到麻烦 Laravel 5.6
- spring - 无法获得 JDBC 连接;嵌套异常是 java.sql.SQLException: JZ002: Password property '' too long。最大长度为 30
- svg - 转型
- html - 为什么当我向上然后向下滚动时,我无法在移动/chrome 响应式上滚动 div?
- r - 从 Shiny 启动 R 进程
- python - 实例方法的装饰器
- java - 使用 reactor netty 为 spring-webflux WebClient 配置 HostnameVerifier
- pow - JAGS - pow 函数在带有标签切换的混合模型中无法正常工作
- angular - Firebase:访问目录数据资产中的 csv 文件时出现 404 错误
- javascript - html选择只返回第一个选项