Apenas para fornecer uma resposta - porque esse erro é bastante comum - aqui estão algumas causas:
1) O
:parameter name não corresponde ao bind por engano (erro?). Isto é o que aconteceu aqui. Ele tem :alias na instrução SQL, mas vinculado :username . Então, quando a ligação do parâmetro foi tentada, o Yii/PDO não pôde encontrar :username na instrução sql, significando que era "um parâmetro curto" e gerou um erro. 2) Esquecendo completamente de adicionar o
bindValue() para um parâmetro. Isso é mais fácil de fazer em outras construções do Yii como $critera , onde você tem um array ou params ($criteria->params = array(':bind1'=>'test', ':bind2'=>'test) ). 3) Conflitos estranhos com CDataProvider Paginação e/ou Classificação ao usar
together e joins . Não há uma maneira específica e fácil de caracterizar isso, mas ao usar consultas complexas em CDataProviders, tive problemas estranhos com parâmetros sendo descartados e esse erro ocorrendo. Uma maneira muito útil de solucionar esses problemas no Yii é habilitar o registro de parâmetros em seu arquivo de configuração. Adicione isso ao seu
db array em seu arquivo de configuração:'enableParamLogging'=>true,
E certifique-se de que o
CWebLogRoute a rota está configurada em seu log seção. Isso imprimirá a consulta que deu um erro e todos os parâmetros que ele estava tentando vincular. Super útil!