[Resolvido] Personalizando o CDbCriteria

Bom pessoal minha dúvida é a seguinte, como faço pra personalizar o search padrão de um model/admin.

model:




...


// Quero que este campo de pesquisa procure pelo nome e também pelo código da Situação(outra tabela do banco)

$criteria->compare('fkSituacao',$this->getSituacao($this->fkSituacao));


...


// Esta função é chamada acima e funciona quando informo o código(integer), mais não funciona com o nome(string)

public function getSituacao($sit)

{

    if(is_null($sit)) return $sit;

    if(is_numeric($sit)) return $sit;

    

    // O que tentei fazer aqui foi pegar o nome da situação na tabela Situação

    // [b]o nome está em outro model[/b]

    $criteria=new CDbCriteria; 

    $criteria->select='codigo'; 

    $criteria->compare('situacao',$sit);

    

    // Aqui ele não pega o nome

    $am=SituacaoAp::model()->find($criteria);

    

    if(empty($am)) return 0;

    

    return $am->attributes['codigo'];

}



Alguém ai sabe como resolver?

Segui por este exemplo aqui.

Opa galera deu certo aqui.




public function getSituacao($sit)

    {

        if(is_null($sit)) return $sit;

        if(is_numeric($sit)) return $sit;

        

        $criteria=new CDbCriteria;

        $criteria->select='codigo'; 

        // Faltou apenas por o 'true' depois do $sit, já que é uma comparação entre 'strings'

        // mudei disse $criteria->compare('situacao',$sit);

        // para isso

        $criteria->compare('situacao',$sit, true); 

        

        $am=SituacaoAp::model()->find($criteria);

        

        if(empty($am)) return 0;

        

        return $am->attributes['codigo'];

    }



Fica a dica pra quem tiver o mesmo problema.

Flws

Ai sim, quebrando um pouco a cabeça hehehe

Já ralei muito, fiquei uns meses sem internet, mais tinha a documentação toda no PC, tive que ler ela pra procurar o que queria hehehe

Hehehe, podes crer.

Essa documentação ta em que formato?

Poderia disponibilizar? É que muuuitas vezes preciso e não tenho net no momento. =)

Ta junto com o famework na área de downloads.