我有一个表 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/