Php Laravel验证:与exists相反(值不应存在于给定的表、列中)
我有一个表Php Laravel验证:与exists相反(值不应存在于给定的表、列中),php,laravel,validation,Php,Laravel,Validation,我有一个表employee,其中有一个可为空的列substitute引用另一个员工。我正在开发的API可以接收对/employee/{employee\u id}的删除请求,它应该验证employee\u id以确保它没有被任何其他行引用。所以基本上,我需要这样一个验证规则: Validator::make($data, [ 'employee_id' => '!exists:employee,substitute' ], [ '!exists' => 'Employ
employee
,其中有一个可为空的列substitute
引用另一个员工。我正在开发的API可以接收对/employee/{employee\u id}
的删除请求,它应该验证employee\u 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是否有类似的现成规则,或者我应该定义自定义验证规则?可以使用
unique
规则,或者创建新规则
'employee\u id'=>'唯一:员工,替代者'
或
Validator::extend('not_exists',function($attribute,$value,$parameters,$Validator){
$exists=DB::table($parameters[0])
->其中($parameters[1],'=',$value)
->存在();
返回$exists==false;
});
Unique在这个用例中没有意义。我只想删除具有给定ID的eamploye,如果该ID未在替换列中用作引用。之后要做什么无关紧要,您想知道该值是否不存在,然后使用unique,这就像是一个技巧在这种情况下,第一个选项与问题无关,但是创建not_exists
规则可能会很好。@balintant如果值是唯一的,不意味着它在表中不存在吗?@MahdiYounesi正确的代码是->,其中($parameters[1],'=',$value)