2016-05-03 8 views
0

Ich habe einen Anmeldevorgang eingerichtet, bei dem ein Bestätigungscode generiert wird, der bei Erfolg entfernt wird. Ich möchte jedoch sicherstellen, dass alle Datensätze für diesen Benutzer gelöscht werden, wenn mehrere Verifizierungscodes für denselben Benutzer vorhanden sind.Yii deleteAll() Datensätze mit der Bedingung

Hier ist mein Code

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); 
} 

Dies scheint jedoch nur alle Datensätze zu löschen, unabhängig auf verschiedenen User_id der in der Tabelle. Kann jemand sehen, wo ich falsch liege?

Antwort

0

Scheint rufen Sie die Funktion() in der falschen Weise löschen ... versuchen Wert vorbei auf diese Weise

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

Danke, dieser Code gibt mir einen Syntaxfehler und ich kann nicht sehen, was sein sollte? – gsusonline

+0

Es gibt einen Tippfehler .... Ich habe .. aktualisieren Sie die Antwort – scaisEdge

+0

Immer noch einen Syntaxfehler, kann diese Bedingung => Paramus Methode von einem Controller aufgerufen werden? – gsusonline

0

Auch können Sie die afterDelete Methode verwenden, um sicherzustellen, dass jedes Mal oder überall jemand eine VerificationCode löscht , Ihre Anwendung löscht auch jeden userVerificationCode. Setzen Sie das in Ihre VerificationCode-Model-Klasse:

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