Ordenação e Filtro de buscas por campos associados Na minha listagem existe um campo que vem de uma associação, na listagem estou conseguindo exibir o nome do campo ao invez do ID, porem no filtro de busca e na ordenação esta dando erro! Campo da listagem: Busca: ...
AM
Ordenação e Filtro de buscas por campos associados  
Fechado
Na minha listagem existe um campo que vem de uma associação, na listagem estou conseguindo exibir o nome do campo ao invez do ID, porem no filtro de busca e na ordenação esta dando erro!

Campo da listagem:
<?php $column_id_tipo_navio = new TDataGridColumn('tipo_navio->desc_t_navio', 'Tipo do Navio', 'right'); ?>


Busca:
<?php         if (isset($data->id_tipo_navio) AND ($data->id_tipo_navio)) {            $filter = new TFilter('tipo_navio->desc_t_navio', 'like', "%{$data->id_tipo_navio}%"); // create the filter            TSession::setValue('NavioList_filter_id_tipo_navio',   $filter); // stores the filter in the session        }?>


Ordenação:
<?php        $order_id_tipo_navio = new TAction(array($this, 'onReload'));        $order_id_tipo_navio->setParameter('order', 'tipo_navio->desc_t_navio');        $column_id_tipo_navio->setAction($order_id_tipo_navio);   ?>


Apenas a listagem esta funcionando! a ordenação e a busca não estão!

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (4)


IF

Olá Augusto. Veja esse exemplo no Tutor, é exatamente que vc deve fazer. Veja que na função onSearch tem uma linha assim:
<?php            $filter = new TFilter('(SELECT name from city WHERE id=customer.city_id)', 'like', "{$data->city_name}%");?>

que filtra os dados que estão em uma tabela associada que nesse exemplo é City. Siga o exemplo que vc consegue. Espero ter ajudado.

www.adianti.com.br/framework_files/tutor/index.php?class=CustomerDat
AM

A ordenação não vai de jeito nenhum!
IF

O filtro funcionou? A ordenação vc tem que seguir a mesma lógica do filtro , veja no exemplo Tutor essas linhas abaixo de como ele ordena a coluna da tabela associada.
<?php $newparam = $param; // define new parameters            if (isset($newparam['order']) AND $newparam['order'] == 'city->name')            {                $newparam['order'] = '(select name from city where city_id = id)';            }?>

AM

Entendi! eu achei que ele implementava alguma coisa para não precisar recorrer a essa gambiarra, tendo em vista que na listagem bastou chamar tipo_navio->desc_t_navio que funcionou!