Solo para proporcionar una respuesta, ya que este error es bastante común, aquí hay algunas causas:
1) El :parameter el nombre no coincide con el enlace por error (¿error tipográfico?). Esto es lo que pasó aquí. Tiene :alias en la instrucción SQL, pero vinculado :username . Entonces, cuando se intentó vincular el parámetro, Yii/PDO no pudo encontrar :username en la declaración sql, lo que significa que era "un parámetro corto" y arrojó un error.
2) Olvidarse por completo de agregar el bindValue() para un parámetro. Esto es más fácil de hacer en Yii otras construcciones como $critera , donde tiene una matriz o parámetros ($criteria->params = array(':bind1'=>'test', ':bind2'=>'test) ).
3) Conflictos extraños con la paginación y/o clasificación de CDataProvider cuando se usan together y joins . No hay una manera específica y fácil de caracterizar esto, pero cuando uso consultas complejas en CDataProviders, he tenido problemas extraños con la caída de parámetros y este error.
Una forma muy útil de solucionar estos problemas en Yii es habilitar el registro de parámetros
en su archivo de configuración. Agregue esto a su db matriz en su archivo de configuración:
'enableParamLogging'=>true,
Y asegúrese de que CWebLogRoute la ruta está configurada en su log sección. Esto imprimirá la consulta que generó el error y todos los parámetros que intentaba enlazar. ¡Muy útil!