Nik*_*aut 2 php laravel laravel-5 laravel-validation
我有一个项目的清单,相关的类别(表名是:items)
--- id ------ category_id ----- name
--- 1 ------- 1 ---------------- aa --> Valid
--- 2 ------- 1 ---------------- bb --> Valid
--- 3 ------- 2 ---------------- aa --> Valid
--- 4 ------- 2 ---------------- bb --> Valid
--- 5 ------- 1 ---------------- aa --> InValid because same name exist in same category
--- 6 ------- 2 ---------------- bb --> InValid because same name exist in same category
Run Code Online (Sandbox Code Playgroud)
唯一规则在这里不起作用,因为类别明智,它对name所有记录进行验证。
public function validateItems($requestAll){
$id = isset($requestAll['id']) ? ','.$requestAll['id'].',id':'';
$rules = [
'name' => 'required|unique:items,name'.$id,
'category' => 'required'
];
return Validator::make($requestAll, $rules);
}
Run Code Online (Sandbox Code Playgroud)
如何验证具有相关类别的项目以在 Laravel 中插入和更新。
我认为你需要类似的东西
'name' => Rule::unique('items')->where(function ($query) use ($categoryId) {
return $query->where('category_id', $categoryId);
}),
Run Code Online (Sandbox Code Playgroud)
UPD:对于更新现有行:
'name' => Rule::unique('items')->ignore($existingRecordId)->where(function ($query) use ($categoryId) {
return $query->where('category_id', $categoryId);
}),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2237 次 |
| 最近记录: |