首页 > 解决方案 > 与laravel中的另一列相比,如何使用规则:唯一的值数组?

问题描述

我有一个值数组的请求,我用下面的代码验证它

$request->validate([
  'doctor_id.*'     => ['required'],
  'doctor_id'     => [Rule::unique('project_orders')->where(function ($query) use ($student) {
    $query->where('student_id', $student->id);
  })],
]);

但是唯一验证不起作用,并且数据被重复插入到表中

我希望医生 ID 字段与 student_id 列是唯一的,正确的规则应该是什么?

请问有什么帮助吗?

标签: laravellaravel-validation

解决方案


首先,您需要在数据库级别进行验证,因此您将添加迁移

$table->unique(['doctor_id', 'student_id']);

这将确保相同doctor_idstudent_id值不会重复

然后在您的验证层中,您将添加

$request->validate([
  'doctor_id.*' => 'unique:project_orders,doctor_id,NULL,id,student_id,'.$student->id,
]);

推荐阅读