Por lo que veo, creo que está haciendo actualización masiva de varios registros.
Dependiendo de las necesidades es más útil o práctico el uso de DAO (como ud lo está haciendo) o el uso de ActiveRecord (mi ejemplo).
Si necesita triggers, desea gestionar TODO desde PHP Y no le interesa el pequeño impacto en velocidad entonces la solución es sin duda ActiveRecord.
Pero si la velocidad es un aspecto MUY importante (la diferencia no es considerable en un sitio normal) y no necesita los triggers, entonces la salida es con DAO.
hola, si estoy usando un update all, con muchos registros, en algunos modulos mas de 20 mil registro, y la velocidad es fundamental, es mi 1º proyecto con yii, y en este update estoy bastante perdido.
siu me podes dar un ejemplo de como hacer este update usando ActiveRecord, estaría bárbaro.
$registros = MiTabla::model()->findAll('campo1 IN (...) AND ...');
foreach($registros as $reg){
$reg->campo2 = 'xxxx';
$reg->save(false); // false aumenta un poco la velocidad saltando las validaciones en rules()
voy hacer es usando filtro, o sea, solo permito updateall, si antes fue realizado un filtro.
Si no fue realizado el filtro, entonces limito en update para solo 100 registros. Si se intenta actualizar mas de 100 registro sin hacer una búsqueda, return false.
de esta forma puedo usar ActiveRecord sin perder velocidad,