我想对多个字段进行“唯一”验证。我已经写了以下验证规则,但不确定如何在其中包含brand_id和company_id
$request->validate([
'name' => 'required|string|unique:products',
'company_id' => 'required',
'brand_id' => 'required',
]);
所以我想做的是添加产品,但是请检查名称对于给定的company_id和brand_id是否唯一。我该怎么办?
答案 0 :(得分:1)
我们可以使用Rule::unique()
函数将自定义条件添加到唯一验证中。
$request->validate([
'company_id' => 'required',
'brand_id' => 'required',
'name' => [
'required',
'string',
Rule::unique('products')->where(function($query) {
$query->where('company_id', request('company_id'));
$query->where('brand_id', request('brand_id'));
}),
],
]);
答案 1 :(得分:0)
有时,您可能希望在第一次验证失败后停止对属性运行验证规则。为此,请将保释规则分配给属性:
$request->validate([
'name' => 'bail|required|string|unique:products',
'company_id' => 'bail|required',
'brand_id' => 'required',
]);
答案 2 :(得分:0)
您可以在忽略选项(下面的NULL,id
)之后添加其他 $request->validate([
'company_id' => 'required',
'brand_id' => 'required',
'name' => 'required|string|unique:products,name,NULL,id,company_id,'.request('company_id').',brand_id,'.request('brand_id'), '
]);
,例如:
{{1}}