在 Yii 中,如何根据 table 中的另一列验证唯一性?

In Yii, how do you validate uniqueness against another column in the table?

我让我的用户能够更改他们的帐户电子邮件。为此,当他们提交他们想要切换到的新电子邮件时,我将该电子邮件作为临时电子邮件存储在我的数据库中。一旦用户单击发送到新电子邮件的确认电子邮件,他们的原始电子邮件将更改为他们的新电子邮件。在我的 "users" table 中,我有一列 "email," 和另一列 "temp_email." 当用户向 "temp_email" 列提交一封新电子邮件时,我会想验证它不仅在 "temp_email" 列内是唯一的,而且在 "email" 列内也是唯一的。

目前,我的 rules() 函数中有这两个数组:

数组('temp_email', 'email'),
数组('temp_email', 'unique', 'message' => UserModule::t("This user's email address already exists."))

表示临时电子邮件必须是电子邮件格式,并且不能与任何其他临时电子邮件相同。我必须添加的第三个数组是什么,表示临时电子邮件不能与 "email" 列中的任何其他电子邮件相同?谢谢!

您可以向您的规则添加额外的属性来指定唯一性检查的确切规则

array('temp_email', 'unique',
      'className' => 'User', 'attributeName' => 'email',
      'message'   => "This user's email address already exists."),