2012-05-29 43 views

回答

36

更漂亮的解决方案是

YourUserModel::model()->deleteAll("day !='" . date('Y-m-d') . "'"); 
+2

我一直发现,使用deleteAll工作较慢相比,DAO – Orlymee

+0

感谢基于删除的建议 –

+4

+1的模式,但更好的方法是参数化条件:YourUserModel :: model() - > deleteAll(“day!=:date”,array('date'=> date('Ym-d')));你也不需要time(),因为这是隐含的。 – Eric

2

尝试......

$query = "delete from `user_login_hash` where `day`!='".(date('Y-m-d',time()))."'"; 
         $query->queryAll($query); 
+0

感谢您的意见 –

+0

它会工作吗? '$ query'是一个字符串,不是任何对象! –

10

更好的用户PDO参数和命令你也有叫execute

$query = "delete from `user_login_hash` where `day`<> :date"; 
$command = Yii::app()->db->createCommand($query); 
$command->execute(array('date' => date('Y-m-d'))); 

UserLoginHash::model()->deleteAll(
    'day <> :date', 
    array('date' => date('Y-m-d')) 
); 
+2

感谢您的意见 –

+0

PDO是这种情况快10倍! – realtebo

+0

@realtebo在这个问题中的所有案例使用PDO –