Olá estou com um problema com o CActiveDataProvider no momento em que ele deveria realizar uma pesquisa, onde ele praticamente ignora as condições de pesquisa e passa a trazer todos os registros sem exceção.
É um codigo básico, no entando, pelos critérios de pesquisa, o resultado não está sendo mostrado.
$dataProvider=new CActiveDataProvider('destaque', array(
'criteria'=>array(
'with'=>array('pages'=>array(
'condition' => 'pages.ID = :IDPage',
'params' => array(':IDPage' =>$this->IDPage), //array
)),
),
));
Verifiquei o query gerada:
SELECT `t`.`ID` AS `t0_c0` , `pages`.`ID` AS `t1_c0` , `pages`.`Name` AS `t1_c1` , `pages`.`TitlePage` AS `t1_c2` , `pages`.`MetaDescription` AS `t1_c3` , `pages`.`MetaKeywords` AS `t1_c4` , `pages`.`Titulo` AS `t1_c5` , `pages`.`Text` AS `t1_c6` , `pages`.`URL` AS `t1_c7` , `pages`.`ID_URL` AS `t1_c8` , `pages`.`DataCriacao` AS `t1_c9` , `pages`.`DataAlteracao` AS `t1_c10` , `pages`.`IDUsuario` AS `t1_c11`
FROM `destaque` `t`
LEFT OUTER JOIN `destaquepagina` `pages_pages` ON ( `t`.`ID` = `pages_pages`.`IDDestaque` )
LEFT OUTER JOIN `page` `pages` ON ( `pages`.`ID` = `pages_pages`.`IDPage` )
WHERE (
`t`.`ID`
IN ( 1, 2, 3 )
)
AND (
pages.ID =1
)
Está tudo ok com a query, quando a testo no mysql, o resultado é capturado corretamento, no entando na aplicação isto não ocorre.
Verifiquei a codificação e verifiquei que um possível problema que possa estar ocorrendo é devido a linha 165 da classe CPagination que mostra:
$criteria->offset=$this->currentPage*$this->pageSize;
Quando o offset é zero ele parece ignorar as condições de pesquisa.
Obrigado, Se isto for mesmo um erro, espero ter ajudado para melhorar a aplicação, tbm espero alguma forma de contornar este problema.