Laravel form validation unique using 2 fields(Laravel 表单验证唯一使用 2 个字段)
问题描述
如何在 2 个字段上设置唯一的验证规则?
How can I have a unique validation rule on 2 fields?
一个.应用程序不应允许两个人具有相同的名字和姓氏.
a. The application should not allow two people to have the same identical first name and last name.
允许用户只填写名字或只填写姓氏.因为用户可能只有其中之一.
It is allowed that the users fills in only a first name or only a last name. Because the user may have only one of them.
B.但是,如果用户只输入名字 (Glen),则表中的其他人不应具有相同的名称(名字 = 'Glen' 且姓氏 = null).另一个格伦史密斯"还可以.
b. But if the user enters only a first name (Glen), no other person in the table should have the same (first name = 'Glen' and last name = null). another 'Glen Smith' ok.
我尝试了以下规则.当两个字段(名字和姓氏)都不为空时,它工作得很好:
I tried the following rule. It works great when both fields (first and last name) are not null:
'firstName' => 'unique:people,firstName,NULL,id,lastName,' . $request->lastName
此规则在 b 上失败.当只有一个字段时.
This rule fails on b. when only one field is present.
有什么提示吗?
推荐答案
内置的 unique
验证器不会真正支持您尝试执行的操作.它的目的是确保单个有效值在数据库中是唯一的,而不是两个值的组合.但是,您可以创建一个自定义验证器:
The built in unique
validator wouldn't really support what you're trying to do. It's purpose is to ensure that a single valid is unique in the database, rather than a composite of two values. However, you can create a custom validator:
Validator::extend('uniqueFirstAndLastName', function ($attribute, $value, $parameters, $validator) {
$count = DB::table('people')->where('firstName', $value)
->where('lastName', $parameters[0])
->count();
return $count === 0;
});
然后您可以通过以下方式访问此新规则:
You could then access this new rule with:
'firstName' => "uniqueFirstAndLastName:{$request->lastName}"
您可能会发现您可能需要稍微调整您的数据库查询,因为它未经测试.
You'll probably find you might need to tweak your database query a little bit as it's untested.
这篇关于Laravel 表单验证唯一使用 2 个字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Laravel 表单验证唯一使用 2 个字段


- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- PHP - if 语句中的倒序 2021-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01