gpt4 book ai didi

php - Laravel 表单验证独特,使用 2 个字段

转载 作者:行者123 更新时间:2023-12-03 00:56:04 28 4
gpt4 key购买 nike

如何在 2 个字段上拥有唯一的验证规则?

a.应用程序不应允许两个人具有相同的名字和姓氏。

允许用户仅填写名字或仅填写姓氏。因为用户可能只有其中之一。

b.但是,如果用户仅输入名字 (Glen),则表中的其他人不应具有相同的名字(名字 = 'Glen' 且姓氏 = null)。另一个“格伦史密斯”好吧。

我尝试了以下规则。当两个字段(名字和姓氏)都不为空时,效果很好:

'firstName' => 'unique:people,firstName,NULL,id,lastName,' . $request->lastName

该规则在 b 上失败。当只有一个字段存在时。

有什么提示吗?

最佳答案

内置的unique验证器不会真正支持您想要做的事情。其目的是确保单个有效值在数据库中是唯一的,而不是两个值的组合。但是,您可以创建 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;
});

然后您可以通过以下方式访问此新规则:

'firstName' => "uniqueFirstAndLastName:{$request->lastName}"

您可能会发现您可能需要稍微调整数据库查询,因为它未经测试。

关于php - Laravel 表单验证独特,使用 2 个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42115930/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com