美文网首页
laravel exists 和 unique

laravel exists 和 unique

作者: 空气KQ | 来源:发表于2019-09-22 23:42 被阅读0次

    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')
      下面这种也可以
                     
    Rule::unique('user_waters')->where(function ($query) use ($where) {
     return $query->where($where);
     })
    

    相关文章

      网友评论

          本文标题:laravel exists 和 unique

          本文链接:https://www.haomeiwen.com/subject/psxpuctx.html