Yii: deleteAll and IN statement

yii
15,204

Solution 1

$criteria = new CDbCriteria;
$criteria->addInCondition('member_id',$membersId);
TRatingMembers::model()->deleteAll($criteria);

http://www.yiiframework.com/doc/api/1.1/CDbCriteria#addInCondition-detail

Solution 2

if (!empty(membersId)) {
    $memberIds = implode(', ', $membersId);
    TRatingMembers::model()->deleteAll('member_id IN (' . $memberIds . ')');
}
Share:
15,204
Oleg  Beat
Author by

Oleg Beat

Updated on July 28, 2022

Comments

  • Oleg  Beat
    Oleg Beat over 1 year

    I have array with ids and want to delete all them by id

    $membersId = array('1','2','3');
    $inStatement = implode(',', $membersId);
    
    //dont work!
    TRatingMembers::model()->deleteAll(array('member_id IN (:member_id)'),
        array(':member_id' => $inStatement));
    

    How to delete all rows with one transaction?

  • Hamzeh Soboh
    Hamzeh Soboh about 7 years
    Is it safe? SQL-Injection?!
  • Valery Viktorovsky
    Valery Viktorovsky about 7 years
    It's safe if your array contains valid values.
  • Hamzeh Soboh
    Hamzeh Soboh about 7 years
    I got it. You can also consider this: Yii::app()->db->createCommand()->delete('video', array('IN', 'id', $extraIds));