Yii2 更新时更改数据时如何验证数据是否唯一

Yii2 更新时更改数据时如何验证数据是否唯一,yii2,yii2-validation,Yii2,Yii2 Validation,我有书桌和isbn字段。 当用户更新现有图书时,如果他更改isbn代码并保存,则应将isbn检查为唯一,否则必须跳过唯一验证 有唯一的验证,但它正在检查,即使isbn在更新时没有更改 我有一个主意。一个变量将添加到账簿模型中,以保持isbn的旧值。更新记录时,将比较旧值和新值。如果更改,将运行自定义验证 这是最佳的方法还是有更好的方法?它是这样工作的,您正在设置: ['a1', 'unique'] 正因为如此,您的表中不能有重复的值 如果你想跳过对isbn的验证检查[当用户更新时,我不知道你为

我有书桌和isbn字段。 当用户更新现有图书时,如果他更改isbn代码并保存,则应将isbn检查为唯一,否则必须跳过唯一验证

有唯一的验证,但它正在检查,即使isbn在更新时没有更改

我有一个主意。一个变量将添加到账簿模型中,以保持isbn的旧值。更新记录时,将比较旧值和新值。如果更改,将运行自定义验证


这是最佳的方法还是有更好的方法?它是这样工作的,您正在设置:

['a1', 'unique']
正因为如此,您的表中不能有重复的值

如果你想跳过对isbn的验证检查[当用户更新时,我不知道你为什么要这样做??你想拥有两本相同isbn的书?],请使用一些:

In update proecess if[book isbn is changed] 
set scenario 1;
In update process if[book isbn isn`t changed]
set scenario 2;

in create process use deafult scenario

它是这样工作的,您正在设置:

['a1', 'unique']
正因为如此,您的表中不能有重复的值

如果你想跳过对isbn的验证检查[当用户更新时,我不知道你为什么要这样做??你想拥有两本相同isbn的书?],请使用一些:

In update proecess if[book isbn is changed] 
set scenario 1;
In update process if[book isbn isn`t changed]
set scenario 2;

in create process use deafult scenario

否,应检查isbn是否更改。如果用户没有更改当前的ISBN,我想跳过,因为本书中存在当前的ISBN,如果我不跳过它,它会给出一个错误“此ISBN已经存在”。它当然存在,因为这本书有ISBN。唯一性验证仅在ISBN更改为其他编号时有效。希望它有意义。谢谢你的建议。看起来不错。不,应该检查isbn是否有变化。如果用户没有更改当前的ISBN,我想跳过,因为本书中存在当前的ISBN,如果我不跳过它,它会给出一个错误“此ISBN已经存在”。它当然存在,因为这本书有ISBN。唯一性验证仅在ISBN更改为其他编号时有效。希望它有意义。谢谢你的建议。看起来不错。您可以在中使
isbn
字段唯一validation@InsaneSkulll我做了,但我只需要在值更改时检查更新的唯一性。显示模型验证。您可以在中将
isbn
字段设置为唯一validation@InsaneSkulll是的,但我只需要在值更改时检查更新的唯一性。显示来自模型的验证。