Laravel 的表单可用验证规则中有个个人认为不是很好理解的规则,就是下面这个规则?:
unique:table,column,except,idColumn
对于这个规格的使用,Laravel5.1文档 比 Laravel5.5 文档文档更好理解些,
这个规则其实就是强迫 Unique 规则忽略指定 ID:
有时候,你希望在验证字段时对指定 ID 进行忽略。例如,在「更新个人资料」页面会包含用户名、邮箱等字段。这时你会想要验证更新的 e-mail 值是否为唯一的。如果用户仅更改了名称字段而不是 e-mail 字段,就不需要抛出验证错误,因为此用户已经是这个 e-mail 的拥有者了。假设用户提供的 e-mail 已经被其他用户使用,则需要抛出验证错误。若要用指定规则来忽略用户 ID,则应该把要发送的 ID 当作第三个参数:
'email' => 'unique:users,email_address,'.$user->id
如果你的数据表使用的主键名称不是 id,那么你可以在第四个参数中来指定它:
'email' => 'unique:users,email_address,'.$user->id.',user_id'
增加额外的 Where 语句:
你也可以指定更多的条件到「where」查询语句:
'email' => 'unique:users,email_address,NULL,id,account_id,1'
上述规则中,只有 account_id
为 1
的数据列会被包含在 unique 规则的验证。