gpt4 book ai didi

php - Laravel 更新模型,具有唯一的属性验证规则

转载 作者:IT老高 更新时间:2023-10-28 12:07:01 29 4
gpt4 key购买 nike

我有一个 Laravel User 模型,它在 usernameemail 上有一个唯一的验证规则。在我的存储库中,当我更新模型时,我会重新验证字段,以免出现必需的规则验证问题:

public function update($id, $data) {
$user = $this->findById($id);
$user->fill($data);
$this->validate($user->toArray());
$user->save();

return $user;
}

测试失败:

ValidationException: {"username":["The username has already beentaken."],"email":["The email has already been taken."]}

有没有办法优雅地解决这个问题?

最佳答案

将当前正在更新的实例的 id 附加到验证器。

  1. 传递实例的 id 以忽略唯一验证器。

  2. 在验证器中,使用参数来检测您是更新还是创建资源。

如果更新,强制唯一规则忽略给定的 id:

//rules
'email' => 'unique:users,email_address,' . $userId,

如果创建,照常进行:

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

关于php - Laravel 更新模型,具有唯一的属性验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22405762/

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