Luis Masuelli
Luis Masuelli

Reputation: 12333

Yii: Call to undefined function CDbExpression()

I'm having this error:

Fatal error: Call to undefined function CDbExpression() in C:\wamp\www\yii-related\agroplasticos\protected\models\Cliente.php on line 73

Being that file as follows (this is the exploding part in the code):

public function rules()
    {
        return array(
            #la identificación solo podrá elegirse durante la creación y la actualización privilegiada.
            array('identificacion', 'required', 'on' => 'insert, updateAdmin'),
            array('identificacion', 'numerical', 'integerOnly' => true, 'on' => 'insert, updateAdmin'),
            array('identificacion', 'length', 'max'=>15, 'on' => 'insert, updateAdmin'),
            #el asesor solo podrá elegirse durante la actualización privilegiada.
            #(durante la inserción se tomará el administrador actual como asesor)
            array('id_asesor', 'filter', 'filter' => array($this, 'defaultAdministrator'), 'on' => 'insert'),
            array('id_asesor', 'required', 'on' => 'updateAdmin'),
            array('id_asesor', 'length', 'max'=>10, 'on' => 'updateAdmin'),
            #la contraseña será requerida solamente en la inserción.
            #no estará presente en la actualización (se usará otro form).
            array('clave', 'filter', 'filter' => array($this, 'passwordUpdate'), 'on' => 'insert, passwordUpdate'),
            array('clave', 'required', 'on' => 'insert, passwordUpdate'),
            #el email será siempre requerido (y en formato de email).
            array('email', 'filter', 'filter' => 'strtolower'),
            array('email', 'required'),
            array('email', 'email'),
            array('email', 'length', 'max'=>255),
            #el nombre será siempre requerido (restringiendo longitudes).
            array('nombre', 'filter', 'filter' => 'strtoupper'),
            array('nombre', 'required'),
            array('nombre', 'match', 'pattern' => '/^([\p{L}\'\d.-]+\s*)*[\p{L}\'\d.-]+$/u'),
            array('nombre', 'length', 'max'=>60, 'min'=>5),
            #la ciudad será siempre requerida (solo permitimos null a las entradas ya existentes).
            array('id_ciudad', 'required'),
            array('id_ciudad', 'numerical', 'integerOnly' => true),
            array('id_ciudad', 'length', 'max'=>10),
            #la habilitacion será booleana. solamente va poder cambiarse durante actualización privilegiada.
            #(durante la inserción se debe poner en 1)
            array('habilitado', 'required', 'on' => 'updateAdmin'),
            array('habilitado', 'boolean', 'on' => 'updateAdmin'),
            array('habilitado', 'default', 'value' => 1, 'on' => 'insert'),
            #la fecha va a tener un valor predeterminado durante la inserción
            array('registrado_en', 'default', 'value' => CDbExpression('NOW()'), 'on' => 'insert'),
            // The following rule is used by search().
            array('identificacion, email, nombre, habilitado, registrado_en, id_ciudad, id_asesor', 'safe', 'on'=>'search'),
        );
    }

Are not those expressions (i.e. native, like CDbExpression) '__autoload'ed? What must I do to fix it? (yii version: 1.1.14)

Upvotes: 1

Views: 1707

Answers (1)

Sven
Sven

Reputation: 70863

They are autoloaded, but only if called correctly.

This is a function call (inside an array definition):

'value' => CDbExpression('NOW()')

This creates an object:

'value' => new CDbExpression('NOW()')

Upvotes: 3

Related Questions