在我的 Laravel-8 应用程序中,表中的 company_id 默认为 0:
我有这个请求规则验证:
'email' => [
'required',
'email',
'min:5',
'max:80',
Rule::unique('users', 'email')
],
'company_id' => [
'nullable',
],
我希望基于两个条件的电子邮件是唯一的:
如果未选择 company_id,则电子邮件应该是唯一的。
如果选择 company_id,则电子邮件应与 company_id 唯一。
我如何实现这一目标?
谢谢
答案 0 :(得分:0)
您可以使用自定义规则
'email' => ['required',
'email',
'min:5',
'max:80',
function ($attribute, $value, $fail)use($request) {
$company=Company::where('email',$value)->where(function ($query)use($request){
if(!empty($request->company_id)){
$query->where('company_id',$request->company_id);
}
})->exists();
if($company){
$fail('The '.$attribute.' is invalid.');
}
},
],