Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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:
  1. <?php 
  2. $column_id_tipo_navio = new TDataGridColumn('tipo_navio->desc_t_navio''Tipo do Navio''right'); 
  3. ?>


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


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


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

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 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:
  1. <?php
  2.             $filter = new TFilter('(SELECT name from city WHERE id=customer.city_id)''like'"{$data->city_name}%");
  3. ?>

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.
  1. <?php
  2.  $newparam $param// define new parameters
  3.             if (isset($newparam['order']) AND $newparam['order'] == 'city->name')
  4.             {
  5.                 $newparam['order'] = '(select name from city where city_id = id)';
  6.             }
  7. ?>

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!