gpt4 book ai didi

php - Laravel 请求仅在更改时更新唯一字段

转载 作者:行者123 更新时间:2023-12-03 02:36:20 24 4
gpt4 key购买 nike

我希望能够根据某些情况验证用户电子邮件地址。

例如

If a user is being created, the email address must be unique

If a user is being updated but the email address hasn't changed, ignore the unique email rule

If a user is being updated and their email address has changed, it has to be unique

我环顾四周,我知道我可以根据这样的方法指定不同的规则

public function rules()
{
$user = User::find($this->users);

switch($this->method())
{
case 'POST':
{
return [
'user.email' => 'required|email|unique:users,email',
];
}
case 'PUT':
case 'PATCH':
{
return [
'user.email' => 'required|email,
];
}
default:break;
}
}

有什么方法可以使在放置/修补程序的情况下,规则检查电子邮件地址是否已更改,如果已更改,则它必须是唯一的?

如果没有,是否有更干净的方法来实现这一目标?也许没有开关盒?也许我还没有偶然发现更深入的验证规则?

最佳答案

如果我理解正确,您希望在电子邮件更改时添加唯一验证,如果是这种情况,那么您只需要在验证中添加一个条件即可。如果您检查唯一验证结构,它看起来像这样 unique:table,column, except,idColumn,请检查 documentation

因此验证将如下所示,当您创建新记录时 $userId 将为 null,但在修补时它将具有值。因此,此验证对于创建和修补都适用。

$userId = isset($user) ? $user->id : null;

$rules = [
'email' => 'required|email|unique:users,email,'. $userId.',id',
];

$this->validate($request, $rules);

关于php - Laravel 请求仅在更改时更新唯一字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378986/

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