【发布时间】:2022-12-05 00:43:49
【问题描述】:
在 Laravel 9 中工作,我在 FormRequests 中进行验证。
我有一个 email_updates 表。
我有 3 列,email、product_uuid、affiliate_uuid,我希望强制执行排独特性。一封电子邮件可以注册多个产品,甚至可以注册来自不同附属公司的同一产品。
我的数据有一个缩短的场景。前 4 行有效。
+--------+--------------+----------------+------------+
| email | product_uuid | affiliate_uuid | created_at |
+--------+--------------+----------------+------------+
| a@a.co | 3ed | 21c | 2022-01-01 |
| b@b.co | 46a | 21c | 2022-01-01 |
| a@a.co | 46a | 21c | 2022-01-01 |
| a@a.co | 46a | 899 | 2022-01-01 |
+--------+--------------+----------------+------------+
但是我需要验证器拒绝这一行,因为 a@a.co、3ed、21c 的三重奏之前已经被使用过
+--------+--------------+----------------+------------+
| a@a.co | 3ed | 21c | 2022-01-01 |
+--------+--------------+----------------+------------+
这是我到目前为止编写的验证程序,但它没有捕获我的重复行
public function rules()
{
return [
'email' => [
'required|email:rfc,dns|min:5|max:75',
Rule::unique("email")->where(function ($query) {
$query->where("product_uuid", $this->product_uuid)
->where("affiliate_uuid", $this->affiliate_uuid);
})
],
];
}
Laravel 文档似乎没有解决我的情况 https://laravel.com/docs/9.x/validation#rule-unique
我确信这很简单,但我在这里错过了什么?
【问题讨论】:
标签: validation laravel-9 laravel-formrequest