欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

5.0 表单验证 唯一性排除 忽略字段 排除自己 排除本身 自己亲自做的 有大用 有大大用

shiping1 的头像

image.png验证唯一性 更新 修改时排除本身 自己亲自做的例子
$this->validate($requests, ['name' => 'required|min:3|unique:users,name,'.$requests->input('id'), 'youxiaoqi' => 'required|date']);





unique:table,column,except,idColumn

except就是主键id的值,,,,,idColumn指的是id的列名,可能不是'id'(比如 'user_id')

字段值在给定的数据库中需为唯一值。如果 column(字段) 选项没有指定,将会使用字段名称。

Occasionally, you may need to set a custom connection for database queries made by the Validator. As seen above, setting unique:users as a validation rule will use the default database connection to query the database. To override this, do the following:

$verifier = App::make('validation.presence');

$verifier->setConnection('connectionName');

$validator = Validator::make($input, [
    'name' => 'required',
    'password' => 'required|min:8',
    'email' => 'required|email|unique:users',
]);

$validator->setPresenceVerifier($verifier);


唯一(Unique)规则的基本用法

'email' => 'unique:users'


指定一个自定义的字段名称

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


强制唯一规则忽略指定的 ID

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


增加额外的 Where 条件

您也可以指定更多的条件式到 "where" 查询语句中:

'email' => 'unique:users,email_address,NULL,id,account_id,1'


上述规则为只有 account_id 为 1 的数据列会做唯一规则的验证。

unique:table,column,except,idColumn

验证字段在给定数据表上必须是唯一的,如果不指定column选项,字段名将作为默认column

指定自定义列名:
'email' => 'unique:users,email_address'


自定义数据库连接

有时候,你可能需要自定义验证器生成的数据库连接,正如上面所看到的,设置unique:users作为验证规则将会使用默认数据库连接来查询数据库。要覆盖默认连接,在数据表名后使用”.“指定连接:

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


强制一个唯一规则来忽略给定ID:

有时候,你可能希望在唯一检查时忽略给定ID,例如,考虑一个包含用户名、邮箱地址和位置的”更新属性“界面,当然,你将会验证邮箱地址是唯一的,然而,如果用户只改变用户名字段而并没有改变邮箱字段,你不想要因为用户已经拥有该邮箱地址而抛出验证错误,你只想要在用户提供的邮箱已经被别人使用的情况下才抛出验证错误,要告诉唯一规则忽略用户ID,可以传递ID作为第三个参数:

'email' => 'unique:users,email_address,'.$user->id


添加额外的where子句:

还可以指定更多条件给where子句:

'email' => 'unique:users,email_address,NULL,id,account_id,1'


 

以上 见 /node/6413

普通分类: