与 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_id
和 student_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) ]
]);
我有一个值数组的请求,我用下面的代码验证它
$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_id
和 student_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) ]
]);