Pay*_*jad 5 validation laravel laravel-5
我有这个领域:
ID,标题,类型
type 是 enum 我想通过 Type 列验证我的标题,例如:
id | title | type
1 | test | option1
2| test | option2
Run Code Online (Sandbox Code Playgroud)
因此,当有人尝试插入具有此条件的行时,应针对该列的唯一性处理验证。
3 | test | option1 ==> should not be insert due unique validation rule.
Run Code Online (Sandbox Code Playgroud)
我的验证规则会是什么样子?
问候
// 编辑 1:规则外观是解决方案。
in:option1,option2 验证字段必须包含在给定的值列表中。
not_in:option1,option2 验证字段不得包含在给定的值列表中。
您的验证应如下所示,但它要求您在“in”参数或“内爆”数组中硬编码您的选项。
$validator = Validator::make(Input::only(['title', 'type']), [
'type' => 'in:option1,option2, // option1 or option2 values
'title' => 'required|min:6|max:255', //whatever rules you want ..
]);
Run Code Online (Sandbox Code Playgroud)
您可以通过这种方式避免“内爆”:
$validator = Validator::make(Input::only(['title', 'type']), [
'type' => Rule::in(['option1', 'option2']), // option1 or option2 values
'title' => 'required|min:6|max:255', //whatever rules you want ..
]);
Run Code Online (Sandbox Code Playgroud)
如果该type
字段不是动态的,您可以使用Rule
类在验证规则中添加额外的查询。
return [
'title' => [
Rule::unique('tablename', 'title')->where(function ($query) {
$query->where('type', 'option1');
})
]
];
Run Code Online (Sandbox Code Playgroud)
否则,您可以制定自定义验证规则。