-1

我们的网站上有 6 种类型的用户,根据他们的属性,他们在 3 个不同的表格上进行管理。&它们都与user表链接以实现共同的登录目的。我在一张桌子上有问题,我有 2 封电子邮件,比如personalEmailbusinessEmail。我希望这些电子邮件和用户表的电子邮件是唯一的。这样,如果 1 个用户test@test.com在用户表中有电子邮件,并且他在application表中的记录可以有相同的,但对于其他用户模型应该显示错误消息。

[
    ['personalEmail', 'businessEmail'], 
    'unique', 
    'targetClass' => '\models\User', 
    'targetAttribute' => 'email', 
    'on'=>'insert,update', 
    'message' => '{attribute}:{value} already exists!'
],

我还希望模型显示关于模型列businessEmailapplication错误,目前它显示错误作为来自用户表的电子邮件。

我希望模型保持电子邮件的唯一性,并且在更新时,跳过检查同一记录。

谁能帮我?

4

1 回答 1

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 重复类似的规则

注意:我没有测试代码

于 2019-02-20T09:21:47.137 回答