过滤器在yii2中不起作用

时间:2016-12-27 13:59:06

标签: php yii2

我想使用验证规则exist检查电子邮件是否已经向不同用户注册。我写了以下代码:

['email','exist',
'targetClass' => User::className(),
'targetAttribute' => 'email',
'message' => 'This email has already been taken. Please try another',
 'filter' => ['!=', 'user_id', Yii::$app->user->identity->id]],

每次都会抛出错误,无论是否存在具有相同电子邮件地址的不同用户。我想从这段代码中进行精确的反向验证。

{
  "field": "email",
  "message": "This email has already been taken. Please try another"
}

2 个答案:

答案 0 :(得分:3)

您想要使用

['email', 'unique'],

同样在您的数据库中,您可以将列标记为唯一(至少对于我正在使用的MySQL)。

它将检查指定列中的唯一记录。

答案 1 :(得分:0)

也许你应该设置唯一和目标类

['email','unique','targetClass'=> '\共同\模型\用户']