CO
Duvida com FilterFields
Oi amigos,
Estou com uma duvida com a utilização de filterfields
Tenho um objeto que é um apontamento de produção, neste objeto eu guardo id do usuario que apontou, id a da ordem de serviço, e nao a descrição, na hora de mostrar um lista de apontamentos, eu utilizei o Studio, mas o grid para mostrar a descrição eu aprendi aqui no forum conforme o codigo abaixo, no entanto o filtro está pelo id, o que torna muito complicado o processo, tem como modificar o filtro para ele aceitar a descrição?
Agradeço a ajuda!!
Estou com uma duvida com a utilização de filterfields
Tenho um objeto que é um apontamento de produção, neste objeto eu guardo id do usuario que apontou, id a da ordem de serviço, e nao a descrição, na hora de mostrar um lista de apontamentos, eu utilizei o Studio, mas o grid para mostrar a descrição eu aprendi aqui no forum conforme o codigo abaixo, no entanto o filtro está pelo id, o que torna muito complicado o processo, tem como modificar o filtro para ele aceitar a descrição?
- <?php
- public function __construct()
- {
- parent::__construct();
- parent::setDatabase('gestor'); // defines the database
- parent::setActiveRecord('Apontamento'); // defines the active record
- parent::setDefaultOrder('id', 'asc'); // defines the default order
- // parent::setCriteria($criteria) // define a standard filter
- //Aqui os filtros utilizam o id que está salvo na tabela, mas não dá para filtrar por id,
- // gostaria de filtar por SystemUser->login ou Ordem->numero ou Perda->descricao
- parent::addFilterField('system_user_id', 'like', 'system_user_id'); // filterField, operator, formField
- parent::addFilterField('ordem_id', 'like', 'ordem_id'); // filterField, operator, formField
- parent::addFilterField('quantidade', 'like', 'quantidade'); // filterField, operator, formField
- parent::addFilterField('perda_id', 'like', 'perda_id'); // filterField, operator, formField
- parent::addFilterField('dataAp', 'like', 'dataAp'); // filterField, operator, formField
- parent::addFilterField(
- // creates the form
- $this->form = new TQuickForm('form_search_Apontamento');
- $this->form->class = 'tform'; // change CSS class
- $this->form->style = 'display: table;width:100%'; // change style
- $this->form->setFormTitle('Apontamento');
- // create the form fields
- $system_user_id = new TEntry('system_user_id');
- $ordem_id = new TEntry('ordem_id');
- $quantidade = new TEntry('quantidade');
- $perda_id = new TEntry('perda_id');
- $dataAp = new TEntry('dataAp');
- // add the fields
- $this->form->addQuickField('Usuario', $system_user_id, 200 );
- $this->form->addQuickField('Ordem', $ordem_id, 200 );
- $this->form->addQuickField('Quantidade', $quantidade, 200 );
- $this->form->addQuickField('Perda', $perda_id, 200 );
- $this->form->addQuickField('Data', $dataAp, 200 );
- // keep the form filled during navigation with session data
- $this->form->setData( TSession::getValue('Apontamento_filter_data') );
- // add the search form actions
- $this->form->addQuickAction(_t('Find'), new TAction(array($this, 'onSearch')), 'fa:search');
- $this->form->addQuickAction(_t('New'), new TAction(array('ApontamentoForm', 'onEdit')), 'bs:plus-sign green');
- // creates a DataGrid
- $this->datagrid = new TDataGrid;
- $this->datagrid->style = 'width: 100%';
- $this->datagrid->datatable = 'true';
- // $this->datagrid->enablePopover('Popover', 'Hi {name} ');
- // Nas colunas do datagrid eu consigo alterar para o atributo correto
- $column_id = new TDataGridColumn('id', 'Id', 'right');
- $column_system_user_id = new TDataGridColumn('system_user->login', 'Usuario', 'right');
- $column_ordem_id = new TDataGridColumn('Ordem->numero', 'Ordem', 'right');
- $column_quantidade = new TDataGridColumn('quantidade', 'Quantidade', 'right');
- $column_perda_id = new TDataGridColumn('Perda->descricao', 'Perda Id', 'right');
- $column_qtde_perda = new TDataGridColumn('qtde_perda', 'Qtde Perda', 'right');
- $column_dataAp = new TDataGridColumn('dataAp', 'Dataap', 'left');
- // add the columns to the DataGrid
- $this->datagrid->addColumn($column_id);
- $this->datagrid->addColumn($column_system_user_id);
- $this->datagrid->addColumn($column_ordem_id);
- $this->datagrid->addColumn($column_quantidade);
- $this->datagrid->addColumn($column_perda_id);
- $this->datagrid->addColumn($column_qtde_perda);
- $this->datagrid->addColumn($column_dataAp);
- ?>
Agradeço a ajuda!!
Claudio, você pode usar um subselect: