我的表架构具有以下结构:
e_base
s_id | e_id | e_name | deleted_at
4 1 estatex | 2018-05-25 13:33:36
Validation Rule:
$validator = Validator::make($request->all(),[
'e_id' => 'required|unique:e_base,e_id'
]);
if($validator->fails()) {
return Response::json($validator->getMessageBag()->toArray();, 400);
}
我的laravel版本是5.2,我无法理解这条规则。希望有人帮助我
答案 0 :(得分:0)
尝试这样做:
$validator = Validator::make($request->all(),[
'e_id' => 'required|unique:e_base,e_id,deleted_at,NULL'
]);
这将忽略具有值而不是NULL的deleted_at。
答案 1 :(得分:0)
你可以试试这个:
$validator = Validator::make($request->all(),[
'e_id' => 'required|unique:e_base,e_id,NULL,e_id,deleted_at,NULL'
]);
这表示只有当deleted_at列等于null时才检查e_base表,并忽略e_id等于NULL的行(仅用于做类似模式)。有关更多信息,请访问此this
答案 2 :(得分:0)
我喜欢 Laravel 文档中提到的“Adding Additional Where Clauses”段落。
通过使用自定义查询逻辑,我们可以完全控制。否则,在添加简单的验证逻辑之前,我们必须考虑唯一规则的元素名称的位置。希望以下解决方案对其他人有用。
use Illuminate\Validation\Rule;
$validator = Validator::make($request->all(), [
'name' => ['required', Rule::unique('e_base')->where(function ($query) {
return $query->whereNull('deleted_at');
})
],
]);