Laravel验证:与exists相反(值不应存在于给定的表,列中)

时间:2018-01-15 16:05:50

标签: php laravel validation

我有一个表employee,它有一个可引用的列substitute,引用另一个员工。我正在开发的API可以收到/employee/{employee_id}的DELETE请求,它应该验证employee_id以确保它没有被任何其他行引用。基本上,我需要一个像这样的验证规则:

Validator::make($data, [
    'employee_id' => '!exists:employee,substitute'
], [
    '!exists' => 'Employee :employee_id cannot be deleted as it is being used as substitute for other employees' // custom message
])

Laravel是否有开箱即用的东西,或者我应该定义自定义验证规则吗?

1 个答案:

答案 0 :(得分:1)

您可以使用unique规则或创建新规则

'employee_id' => 'unique:employee,substitute'

或者

Validator::extend('not_exists', function($attribute, $value, $parameters, $validator) {
  $exists = DB::table($parameters[0])
    ->where($parameters[1], '=', $value)
    ->exists();

  return $exists === false;
});