Yii:调用未定义的函数CDbExpression()

时间:2014-02-10 23:19:29

标签: php yii

我遇到了这个错误:

致命错误:在第73行的C:\ wamp \ www \ yii-related \ agroplasticos \ protected \ models \ Cliente.php中调用未定义的函数CDbExpression()

该文件如下(这是代码中的爆炸部分):

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

这些表达式(即本机,如CDbExpression)'__autoload'不是吗? 我该怎么做才能修好它? (yii版本:1.1.14)

1 个答案:

答案 0 :(得分:3)

它们是自动加载的,但只有在正确调用的情况下才会自动加载。

这是一个函数调用(在数组定义中):

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

这会创建一个对象:

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