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

我有一个laravel

User模型,该模型在username和上具有唯一的验证规则email。在我的存储库中,当我更新模型时,我将重新验证字段,以使所需的规则验证没有问题:

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 been taken."],"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',

以上是 具有属性唯一验证规则的Laravel更新模型 的全部内容, 来源链接: utcz.com/qa/414546.html

回到顶部