我有user桌子。我创建了一个包含 3 个字段的表单:
前两个字段是唯一的。这些字段的模型规则如下所示:
[['Username', 'phonenumber'], 'required'],
[['Username', 'phonenumber'], 'unique'],
Run Code Online (Sandbox Code Playgroud)
我使用软删除,所以当记录被删除时,它实际上保留在数据库中,但状态值将更改为0.
问题是,如果我使用现有用户名添加记录,它会显示一条错误消息,如“已添加”。如果username状态值为 value ,我需要忽略验证0。
使用filter属性UniqueValidator
public function rules()
{
return [
...
['username', 'unique', 'filter' => ['<>', 'status', 0]];
...
];
}
Run Code Online (Sandbox Code Playgroud)
最好声明常量而不是0(类似于const STATUS_DELETED = 0)并将其用作类self::STATUS_DELETED内部User。您也可以使用!=代替<>.
最后的建议是使用username而不是Username遵循命名数据库表列的约定。
阅读更多关于filter在官方文档中声明的方式。
这里filter描述了将条件设置为数组的方法。
| 归档时间: |
|
| 查看次数: |
574 次 |
| 最近记录: |