参数化的DeleteAllByAttributes在YII中不起作用

时间:2013-01-10 09:51:17

标签: yii

我使用以下代码:

MyClass::model()->deleteAllByAttributes(array('phone_number'=>':phone_number'), '', array(':phone_number'=>$phoneNumber));

我收到以下错误:

CDbException
SQLSTATE[HY093]: Invalid parameter number: number of bound variables
does not match number of tokens. The SQL statement executed was:
DELETE FROM `my_class` WHERE `my_class`.`phone_number`=:yp0
(E:\xampp\htdocs\yii\db\CDbCommand.php:354)

1 个答案:

答案 0 :(得分:14)

我相信你不需要绑定attributes数组中的属性(如同findAllByAttributes()中那样)。 params数组中的值绑定到condition字符串中的值,而不是attributes数组中的值,因此我相信以下内容适合您(并进行清理):

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