与 laravel 中的另一列相比,如何将 Rule:unique 与值数组一起使用?

How to use Rule:unique with array of values compared to another column in laravel?

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

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

但唯一性验证不起作用,数据被插入到 table 中并带有重复项

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

有什么帮助吗?

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

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

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

然后在您的验证层中添加

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

您可以像这样进行验证

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