[英]How to custom validation unique multiple column in laravel
我有带有(id,名称,公司)的合同表,还有我的规则:
public function rules()
{
return [
'name' => 'required',
'company' => 'required'
];
}
当我创建
合同编号为1,名称为A,公司为C的合同
合同二,id = 2,名称= A,公司=C。这是错误的。
因为我希望公司不能使用相同的合同名称。
如果合同2的ID = 2,名称= B,公司=C。可以。
所以我想知道这两个列的自定义名称和公司字段如何相互绑定
您可以为此使用自定义规则关闭。
public function rules()
{
return [
'name' => [
'required',
function($attribute, $value, $fail) use($this){
$exists = \DB::('contracts')->where('company', $this->company)->where('name', $this->name)->exists();
if(!exists){
$fail($attribute.'already added for this company.');
}
}
],
'company' => 'required'
];
}
我希望你明白。
您可以在此处查看文档: https : //laravel.com/docs/5.8/validation#custom-validation-rules
以下将在创建上工作
'name' => 'required|unique:contracts,name,'.$this->id.',NULL,id,company,'.$request->input('company')
唯一规则的(未记录)格式为:
table [,column [,ignore value [,ignore column [,where column,where value] ...]]]
可以指定多个“ where”条件,但只能检查是否相等。 其他任何比较都需要使用闭包(如接受的答案中所示)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.