我已经设置了一个登录过程,在该过程中生成验证码,并在成功后删除。但是,我想确保如果同一用户有多个验证码,在登录成功后,删除该用户的所有记录。
这是我的代码
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。有人能看出我哪里错了吗?
5条答案
按热度按时间iszxjhcz1#
如果要删除具有指定属性的记录,最简洁的方法是使用
deleteAllByAttributes()
:jdzmm42g2#
似乎您调用函数delete()的方式不对...请尝试以这种方式传递值
a11xaf1n3#
对于Yii2,记录的方法是使用函数
deleteAll()
。我通常以数组的形式传递参数,如下所示:
nfeuvbwi4#
同样,你也可以使用
afterDelete
方法,来确保每次或任何地方有人删除一个verificationCode,你的应用程序也会删除每个userVerificationCode。把这个放在你的verificationCode模型类中:ecbunoof5#
您可以使用以下方法从数据库中删除所有user_id条目:
也可以直接在控制器操作中使用另一种方法
用户ID =:用户ID =:用户ID=:用户ID=:用户ID =:用户ID =:
使用以下方法重定向URL
系统管理员/系统管理员/系统管理员/系统管理员