2017-03-06 9 views
1

私はyii2プロジェクトで作業しています。私は電子メールIDが一意でなければならないという点でユーザーモデルを持っています。追加機能で動作しています。しかし、私がレコードを更新するとき、それはユニークな検証をチェックしていません。続きyii2でアップデート中に一意の検証を確認する方法

は私のユーザモデルのコードです:でも、私が試した

public function rules() { 
     return [ 
      [['first_name', 'last_name', 'address', 'mobile', 'email', 'password_hash', 'role_id'], 'required'], 
      [['address'], 'string'], 
      [['role_id'], 'integer'], 
      [['email'], 'email'], 
      [['email'], 'unique', 'targetAttribute' => ['email']], 
      [['created_at', 'updated_at'], 'safe'], 
      [['first_name', 'last_name', 'email', 'password_hash'], 'string', 'max' => 255], 
      [['mobile'], 'required','on'=>'create,update'], 
      //[['mobile'], 'string','max'=>10], 
      [['mobile'], 'number','numberPattern' => '/^[0-9]{10}$/','message'=>"Mobile must be integer and should not greater then 10 digit"], 
      [['password_hash'],'string','min'=>6], 
      //[['mobile'], 'number'], 
      [['status'], 'string', 'max' => 1,'on'=>'create,update'], 
      [['role_id'], 'exist', 'skipOnError' => true, 'targetClass' => Roles::className(), 'targetAttribute' => ['role_id' => 'id']], 
     ]; 
    } 

:[[ 'メール'] 'ユニーク'、 'targetAttribute' => [ 'メール']、 'オン' => array( 'create'、 'update')]、

しかし、更新機能では一意のルールをチェックしていません。

+0

あなたは 'targetAttribute'を追加する必要はありませんチェックされたものと同じです。なぜそれは動作していないと思いますか? – Bizley

+0

はい更新プログラムのページでまだ動作していないので削除しました – David

+0

再度 - なぜ動作していないと思われますか?あなたは何を期待し、何を得るのかを説明してください。 – Bizley

答えて

0

チェックする欄が同じであれば、ヘルプモデルユーザとDBに

[['email'], 'unique'], 
0

TargetClassチェック既存の電子メールを使ってみて、それはだ場合

['email', 'filter', 'filter' => 'trim'], 
    ['email', 'required'], 
    ['email', 'email'], 
    ['email', 'unique', 'targetClass' => '\app\models\User', 'message' => 'This email address has already been taken.'], 
+0

ありがとうございますが、レコードの更新中にこれは動作しません。\ – David

関連する問題