laravel validator unique
'name' => 'required|unique:test,display_name,11,age,extra_field,extraValue'
解释
对于客户端输入的 name 字段
- name 不能为空
- name 字段值在给定的数据库表中需为唯一值
- // unique 校验规则
- unique:table,column,except,idColumn
- // 举个栗子
- unique:test,display_name,11,age,extra_field,extraValue
test => 数据库表
display_name => test 数据表结构中的字段名称
11,age => except,idColumn // 表示忽略 test 数据表中 age = 11 的数据记录
extra_field,extraValue => 额外的where条件 {
// 表示上述规则只会为数据库test表中 extra_field = 'extraValue' 的数据记录做唯一规则的验证
}
ps
注意:校验规则在 laravel 不同版本中有些许变化
举两个laravel版本栗子:
1、Laravel Framework version 5.1.20 (LTS)
在这个版本里是可以指定数据库连接
// _id: 指定的 ID (指定主键) 名称
‘email’ => ‘email|unique:mongodb.user,email,’.$uid.’,_id’,
mongodb.user => [
mongodb => laravel数据库配置文件 database.php 配置项 connections 数组里面的mongodb连接
user => mongodb连接的数据库里面的集合或者数据表 user
]
2、Laravel Framework version 4.2.17
但是,在这个版本里面就不能指定数据库连接,使用laravel默认的数据库连接,
所以,估计是 laravel 后面考虑到这个情况在后面的版本加了这个功能。
3、更新与插入唯一性验证
public static function rules ($id=0, $merge=[]) {
return array_merge(
[
'username' => 'required|min:3|max:12|unique:users,username' . ($id ? ",$id" : ''),
'email' => 'required|email|unique:member'. ($id ? ",id,$id" : ''),
'firstname' => 'required|min:2',
'lastname' => 'required|min:2',
...
],
$merge);
}
Validation on create:
$validator = Validator::make($input, User::rules());
Validation on update:
$validator = Validator::make($input, User::rules($id));
Validation on update, with some additional rules:
$extend_rules = [
'password' => 'required|min:6|same:password_again',
'password_again' => 'required'
];
$validator = Validator::make($input, User::rules($id, $extend_rules));