laravel mysql exists_关于 Laravel 验证规则中的 exists 和 unique

Laravel 提供了强大的表单验证规则,我在项目中 exists 和 unique 用得比较频繁,参照官方文档写下此文,以便记录下这两个规则的详细用法,以下基于 Laravel 5.4 提供了使用字符串和 Illuminate\Validation\Rule 两种方式生成规则的方法。

exists:table,column

验证字段的值是否存在于数据库指定表的指定列中,如果不存在将会抛出异常,这里是关于 exists 规则的 详细说明。

基本用法

验证 users 表中是否存在 email 等于指定的 email 值的记录

'email' => 'exists:users'

Rule::exists('users')

自定义列名

验证 users 表的 email_address

'email' => 'exists:users,email_address'

Rule::exists('users','email_address')

自定义数据库连接

验证指定数据库连接的 users 表

'email' => 'exists:connection.users,email'

附加 WHERE 条件(可以有多个)

除了验证 email_address 还需要验证 role 等于 admin

'email' => 'exists:users,email_address,role,admin'

Rule::exists('users','email_address')->where('role','admin')

! 表示不等于

'email' => 'exists:users,email_address,role,!admin'

Rule::exists('users','email_address')->whereNot('role','admin')

NULL 在 MySQL 中是通过 IS 判断的,这里注意不用 IS

'email' => 'exists:users,email,deleted_at,NULL'

Rule::exists('users','email_address')->whereNull('deleted_at')

对不等于 NULL 的情况不能使用 !,而是使用 NOT_NULL

'email' => 'exists:users,email,deleted_at,NOT_NULL'

Rule::exists('users','email_address')->whereNotNull('deleted_at')

unique:table,column,except,idColumn

验证字段的值在数据库指定表的指定列中是否唯一,如果不唯一将会抛出异常,这里是关于 unique 规则的 详细说明

基本用法

验证指定的 email 值在 users 表的 email 中是否唯一

'email' => 'unique:users '

Rule::unique('users')

自定义列名

验证 users 表的 email_address

'email' => 'unique:users,email_address'

Rule::unique('users','email_address')

自定义数据库连接

验证指定数据库连接的 users 表

'email' => 'unique:connection.users,email_address'

排除某条记录

排除 users 表中 id 等于 $userId 的记录,使用场景是用户修改 email 时,需要验证自身除外的其他用户是否已使用了该 email

'email' => 'unique:users,email_address,'.$userId

Rule::unique('users','email_address')->ignore($userId)

排除时指定 primary_key

排除 users 表中 user_id 等于 $userId 的记录

'email' => 'unique:users,email_address,'.$userId.',user_id'

Rule::unique('users','email_address')->ignore($userId,'user_id')

附加 WHERE 条件(和 exists 的 WHERE 条件相同)

由于排除是在 WHERE 条件之前的,如果指定了 WHERE 条件,但是没有指定排除,需要把第三个参数设为 NULL

'email' => 'unique:users,email_address,NULL,id,role,admin'

Rule::unique('users','email_address')->where($role,'admin')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值