本文章來給各位同學介紹關於Yii deleteByAttributs 用法,慎用Dao的delete,希望此文章對大家會有所幫助。
Yii框架一定要慎用Dao的delete,一不小心它生不成條件的話,就變成了整表刪除。
可以用ActiveRecord的deleteByAttributes或deleteAll方法相對不容易寫錯。
deleteByAttributes用法如下:
代碼如下 復制代碼MyClass::model()->deleteAllByAttributes(array(
'phone_number'=>$phoneNumber,
));
或者第一個參數為空,使用第二個條件參數
代碼如下 復制代碼MyClass::model()->deleteAllByAttributes(array(),'`phone_number` = :phone_number',array(
':phone_number'=>$phoneNumber,
));
或者使用deleteAll():
代碼如下 復制代碼MyClass::model()->deleteAll('`phone_number` = :phone_number',array(
':phone_number'=>$phoneNumber,
));
再來一個帶in條件的
代碼如下 復制代碼$condition = new CDbCriteria();
$condition->addCondition('status=:status');
$condition->params = array(':status'=>1);
$condition->addInCondition('user_id',array(100111,100221,100221));
User::model()->deleteAll($condition);Dao帶in條件的示例
Yii::app()->db->createCommand()
->delete('mw_user', array('and', 'user_id=:user_id', array('in', 'position_id', array(1,2,3))),array(':user_id'=>121111));
但是請慎用DAO的delete,當你的條件寫錯一點,它將無法生成where條件,同時sql語句中也沒有了where,但還不一定報錯,結果就成了沒有where的delete,結果會是整表被刪除了。