具有属性唯一验证规则的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
当前正在更新的实例的追加到验证器。
传递
id
实例的来忽略唯一的验证器。在验证器中,使用参数来检测您是否正在 更新 或 创建 资源。
如果进行更新,则强制唯一规则忽略给定的id:
//rules'email' => 'unique:users,email_address,' . $userId,
如果创建,请照常进行:
//rules'email' => 'unique:users,email_address',
以上是 具有属性唯一验证规则的Laravel更新模型 的全部内容, 来源链接: utcz.com/qa/414546.html