Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
Usar criteria no TDBUniqueSearch Olá pessoal, como vão? Preciso de uma ajuda para colocar um filtro no TDBUniqueSearch A regra é não trazer a mesma empresa que estou editando. Abaixo segue parte do código que utilizo em um form com cortina lateral. Só coloquei o trecho que estou com a duvida. ...
AW
Usar criteria no TDBUniqueSearch  
Olá pessoal, como vão?
Preciso de uma ajuda para colocar um filtro no TDBUniqueSearch
A regra é não trazer a mesma empresa que estou editando.

Abaixo segue parte do código que utilizo em um form com cortina lateral.
Só coloquei o trecho que estou com a duvida.
  1. <?php
  2.         $filtro_contratada TSession::getValue('criteria_contratada');
  3.         
  4.         $repo = new TRepository('Empresa');
  5.         $criteria_contratada = new TCriteria();
  6.         $criteria_contratada->add(new TFilter('id''<>'$filtro_contratada));
  7.         $contratada_id  = new TDBUniqueSearch('contratada_id[]''sgdt''Empresa''id''cnpj'null$criteria_contratada);
  8.         ....
  9.         ....
  10.         ....
  11. ?>


minha duvida é quanto ao recebimento do parâmetro ID da empresa pois, quando clico em editar através da listagem para carregar as informações na cortina lateral eu não consigo pegar esse parâmetro para colocar no filtro, pois esse ID (empresa) não pode ser apresentado na pesquisa que o usuário faz no TDBUniqueSearch.

Eu tenho que carregar esse critério quando carrego os dados através do método onEdit?
Se sim, tem um exemplo?

Tentei com TSession porem para alterar o ID eu tenho que clicar 2X em editar para mudar esse ID na sessão no form da cortina lateral.

Segue parte do código dentro do método onEdit
  1. <?php
  2.                 $contratadas Contratada::where('contratante_id''='$empresa->id)->load();
  3.                     
  4.                 TSession::setValue('criteria_contratada'$param['key']);
  5.                 if ($contratadas){            
  6.                     $this->contratadas->addHeader();
  7.                     foreach ($contratadas as $contratada){
  8.                         $objeto_contratada = new stdClass;
  9.                         $objeto_contratada->contratada_id       $contratada->contratada_id// campo TDBUniqueSearch
  10.                                                
  11.                         $this->contratadas->addDetail($objeto_contratada);
  12.                     }
  13.                     $this->contratadas->addCloneAction();
  14.                 }else{
  15.                     //$this->onClear($param);
  16.                     $this->contratadas->addHeader();
  17.                     $this->contratadas->addDetail( new stdClass );
  18.                     $this->contratadas->addCloneAction();
  19.                 }
  20. ?>


Obrigado

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (2)


NR

Você pode criar a variável da criteria com escopo de classe e adicionar as restrições na onEdit:
  1. <?php
  2. // construct
  3. $this->criteria = new TCriteria();
  4. $contratada_id  = new TDBUniqueSearch('contratada_id[]''sgdt''Empresa''id''cnpj'null$this->criteria);
  5. // onEdit
  6. $this->criteria->add(new TFilter(....));
  7. ?>
AW

Nataniel obrigado.

Funcionou certinho.