2016-05-03 15 views
0

認証コードが生成されたログインプロセスを設定し、成功した場合は削除します。ただし、同じユーザーの複数の認証コードがある場合は、ログインが成功すると、そのユーザーのすべてのレコードを削除するようにしたいと考えています。条件付きのYii deleteAll()レコード

ここに私のコードは

if ($model->validate() && $model->login()) { 

//delete this verification code 
$verificationCode->delete(); 
//delete all existing codes for user_id 
VerificationCode::model()->deleteAll('user_id',$user->id); 

Yii::app()->user->setReturnUrl(array('/system/admin/')); 

$this->redirect(Yii::app()->user->returnUrl); 
} 

だしかし、これは関係なく、テーブル内の別のuser_idの上、ちょうどすべてのレコードを削除しているようです。誰かが私が間違っているのを見ることができますか?

答えて

0

は、関数は、(削除を呼び出すようだ)間違った方法で...また、このよう

VerificationCode::model()->deleteAll(['user_id' => $user->id]); 
+0

ありがとう、このコードは私に構文エラーを与えて、私は何がすべきか分かりませんか? – gsusonline

+0

typoがあります....私は答えを更新しました – scaisEdge

+0

まだ構文エラーが出ていますが、この状態=> Paramusメソッドはコントローラから呼び出すことができますか? – gsusonline

0

値を渡してみてください、あなたは毎回またはどこでも誰かが1 verificationCodeを削除することを確認するために、afterDeleteメソッドを使用することができますアプリケーションはすべてのuserVerificationCodeも削除します。これをあなたのverificationCodeモデルクラスに入れてください:

protected function afterDelete() 
{ 
    parent::afterDelete(); 
    VerificationCode::model()->deleteAll('user_id = :user:id',[':user_id' =>$this->user_id]); 
    //... any other logic here 
}