1

我有一个带有以下内容的用户模型

public $rules = [
    'email' => 'required|between:2,64|unique:users',
    'password' => 'required:create|between:2,32|confirmed',
    'password_confirmation' => 'required_with:password|between:2,32'
];

我正在尝试使用新值更新模型

$user->auth_token = $token->authToken;
$user->save();

在保存时,我收到验证错误,因为模型需要电子邮件、密码和密码确认。我试图添加sometimes|到验证中,但这似乎不起作用。我也使用$user->forceSave()了 which works 但它似乎可以解决实际问题。关于如何在不触发验证的情况下更新单个字段的任何想法?

4

2 回答 2

1

我假设您不希望仅在更新时验证对象创建。

通过将此方法添加到使用您的模型,October\Rain\Database\Traits\Validation您可以禁用对正在创建的对象的验证。

public function beforeValidate()
{
    if(!$this->exists) {
        $this->rules = [];
    }
}
于 2021-02-12T11:19:33.630 回答
0

根据octobercms 文档,使用$user->forceSave()是绕过验证的正确方法。

于 2017-03-28T10:13:31.493 回答