我们的网站上有6种类型的用户,并根据其属性在3个不同的表上进行管理。并且它们都与user
表链接在一起,以实现常见的登录目的。我的一个表格有问题,其中有2封电子邮件,例如personalEmail
和businessEmail
。我希望这些电子邮件和用户表的电子邮件是唯一的。这样,如果1个用户在用户表中有test@test.com
个电子邮件,而他在application
表中的记录可以相同,但对于其他用户,模型应显示错误消息。
[
['personalEmail', 'businessEmail'],
'unique',
'targetClass' => '\models\User',
'targetAttribute' => 'email',
'on'=>'insert,update',
'message' => '{attribute}:{value} already exists!'
],
我还希望模型显示有关businessEmail
模型中的列application
的错误,当前它显示错误是来自用户表的电子邮件。
我希望模型保持电子邮件的唯一性,并且还希望在更新时,跳过对同一记录的检查。
有人可以帮助我吗?
答案 0 :(得分:0)
您是否希望两个表都有唯一的电子邮件?
您必须在规则中使用条件
[['personalEmail'],
'unique',
'targetClass' => '\models\User',
'targetAttribute' => 'email',
'on'=>'insert,update',
'whenClient' => "function (attribute, value) {
// Here you check by jQuery if businessEmail field is the same personalEmail
}"
'message' => '{attribute}:{value} already exists!'
],
['personalEmail','customValidation'] // Custom Validation
在相同模型中:
public function customValidation($attribute){
// Here you can check your conditions
}
然后您对businessEmail重复类似的规则
注意:我没有测试代码