laravel validator unique

laravel validator unique

'name' => 'required|unique:test,display_name,11,age,extra_field,extraValue'

解释

对于客户端输入的 name 字段
  1. name 不能为空
  2. 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));

https://blog.csdn.net/sshfl_csdn/article/details/50159303 

https://stackoverflow.com/questions/22405762/laravel-update-model-with-unique-validation-rule-for-attribute

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值