laravel - Laravel 的验证规则

标签 laravel validation rules

我有一个表 GateAccess:id、person_id、gate_id、time_id。 向此表添加新记录时,我想防止为一个 person_id 添加具有相同 gateway_id 的多条记录。 Gate_id 对于特定的 person_id 必须是唯一的。

我想要这样的表格:

id, person_id, gate_id, time_id
1, 2, 1, 1
2, 2, 2, 2

但不是那个:

id, person_id, gate_id, time_id
1, 2, 1, 1
2, 2, 1, 2

我有一个验证器:

 $validator = Validator::make($data, [
            'first_name' => 'required',
        ], $messages);

你能帮我为这个验证器制定规则吗?

最佳答案

您可以使用验证器规则来实现您想要的,因此在您的情况下,您的验证应该如下所示。

Validator::make($data, [
      'gate_id' => [
          'required',
          Rule::unique('GateAccess')->where(function ($query) use($data){
               $query->where('person_id', $data->person_id);
          })->ignore($request->id),
      ],
])->validate();

它将把 gateway_id 设置为唯一,其中记录中的人员 ID 等于您传递的人员 ID。

不要忘记将其添加到您的代码中

use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Validator;

关于laravel - Laravel 的验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60397227/

相关文章:

php - __toString() 在使用字符串时不得抛出异常错误

validation - RDFa 面包屑导航和验证器的正确文档类型

java - 验证一个巨大的 XML 文件

tomcat - 我的 Tomcat 重写规则不起作用,我不知道为什么

regex - pcre 中的终止问题

php - Laravel 路由变量,foreach

php - Laravel GroupBy 的使用

mysql - 使用原始 sql 时的 Laravel SQL 参数绑定(bind)

validation - CakePHP 3 组合或合并验证器

firebase - 如何配置 Firebase 项目的规则以确保安全?