Escenario
Necesitamos poner un valor por defecto en un campo de la base de datos. Cuando el usuario no rellene el valor del campo en el formulario, a la hora de actualizar o dar de alta un nuevo registro, el ActiveRecord automáticamente debe insertar el valor por defecto en la base de datos.
Descripción de la solución
La solución pasa por poner en el método rules() de nuestra tabla, un validador de tipo CDefaultValueValidator que nos permite especificar un valor por defecto para el campo de manera dinámica. Tiene dos atributos para especificar:
- setOnEmpty: valor booleano. Si es true entonces el valor predeterminado se establece sólo cuando el valor del atributo es una cadena nula o vacía. En caso de que sea false, se establece siempre.
- value: el valor por defecto a establecer.
Ejemplo: en el siguiente ejemplo hay un campo que se llama 'leido' en el ActiveRecord, el cual queremos que
como valor por defecto sera cero.
public function rules()
{
return array(
array('leido','default','value' => 0),
);
}