gpt4 book ai didi

yii2 - 如果新值等于上一个值,则跳过 yii2 对更新操作的唯一验证

转载 作者:行者123 更新时间:2023-12-04 14:24:27 25 4
gpt4 key购买 nike

由于唯一验证器在更新操作时出错(“此用户名已被使用”)我想在新用户名值不等于 prev 值时验证更新操作中的用户名,这是我的规则:

        [['username'], 'unique', 'on'=>'update', 'when' => function($model){
return static::getOldUsername($model->id) !== $model->username;
}
],

我的功能是获取上一个用户名值:
public static function getOldUsername($id)
{
return static::findIdentity($id)->username;
}

但它不起作用,我认为 $model->getId() 由于使用静态 ID(例如:23)而没有返回任何内容。
        [['username'], 'unique', 'on'=>'update', 'when' => function($model){
return static::getOldUsername(23) !== $model->username;
}
],

我怎样才能得到模型ID?或者如果您有其他方法可以在新值等于 prev 值时跳过 yii2 对更新操作的唯一验证,请解释它。

提前致谢

最佳答案

我想你可以用 $user->isAttributeChanged('username');
示例(我不是在测试此代码):

[['username'], 'unique', 'on'=>'update', 'when' => function($model){
return $model->isAttributeChanged('username')
}],

关于yii2 - 如果新值等于上一个值,则跳过 yii2 对更新操作的唯一验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485357/

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