MC
TDBSeekButton com criteria utilizando Agregação
Estou desenvolvendo um form de pesquisa no qual tenho um TDBSeekButton.
Neste form, o promotor logado no sistema irá consultar os clientes vinculados a ele pelo TDBSeekButton.
Tenho a seguinte estrutura no Banco de Dados (resumida):
PROMOTOR (id, nome)
CLIENTE (id, nome)
PROMOTORCLIENTE (id, promotor_id, cliente_id)
PESQUISA (id, promotor_id, cliente_id, data, ...)
Existe uma agregação entre PROMOTOR e CLIENTE, pois cada promotor pode estar relacionado a vários clientes e vice-versa.
Como faço para, no TDBSeekButton, no formulário de pesquisa, eu consiga exibir somente os clientes vinculados aquele promotor na tabela PROMOTORCLIENTE?
Com uma associação eu consigo fazer isso tranquilamente, mas com a agregação estou meio perdido. Até tentei algumas coisas, mas em vão.
Anexei um print de parte da tela para terem uma ideia.
Neste form, o promotor logado no sistema irá consultar os clientes vinculados a ele pelo TDBSeekButton.
Tenho a seguinte estrutura no Banco de Dados (resumida):
PROMOTOR (id, nome)
CLIENTE (id, nome)
PROMOTORCLIENTE (id, promotor_id, cliente_id)
PESQUISA (id, promotor_id, cliente_id, data, ...)
Existe uma agregação entre PROMOTOR e CLIENTE, pois cada promotor pode estar relacionado a vários clientes e vice-versa.
Como faço para, no TDBSeekButton, no formulário de pesquisa, eu consiga exibir somente os clientes vinculados aquele promotor na tabela PROMOTORCLIENTE?
Com uma associação eu consigo fazer isso tranquilamente, mas com a agregação estou meio perdido. Até tentei algumas coisas, mas em vão.
Anexei um print de parte da tela para terem uma ideia.
Olá Marcelo. Vc tem que criar um critério pra isso.
O último parâmetro do TDBSeek é justamente um TCriteria. Vc poderia fazer da seguinte forma:
Assim ele vai filtrar os clientes referente a um promotor específico.
Oi Ivan, eu até pensei, porém a minha relação Promotor X Cliente está numa outra tabela (PromotorCliente), pois é uma agregação.
O critério funcionaria caso o campo "promotor_id" estivesse na tabela CLIENTE (associação), certo?
Obrigado pelo retorno.
Oi Marcelo, vc pode usar um sub-selecta junto com TCriteria.
Eu tenho uma tabela mais ou menos parecido com o seu caso com o nome de ProdutosXFornecedor, quando eu preciso filtrar pelo TDBSeekButton eu faço dessa forma:
Onde o fornecedor_id pra vc seria promotor_id. E o produto_id pra vc seria cliente_id. Entendeu?
então eu acho que o seu sub-selecta seria mais ou menos assim:
Tenta aí
Oi Ivan, obrigado pela dica, porém ao adicionar o $criteria ao TDBSeekButton, está dando o seguinte erro:
"Object of class AdiantiWidgetWrapperTDBSeekButton could not be converted to string"
Segue parte do código:
Tem ideia do que pode ser?
Marcelo, a sua variável $promotor_id que vc passou no parâmetro, é um componente, tem que ser o código do promotor passado por exemplo numa variável de sessão.
Verdade Ivan. Agora, com o subselect funcionou perfeitamente.
Muito obrigado, pela ajuda e paciência!
Estou engatinhando no PHP e orientação a objetos. Sempre programei de forma procedural e em outra linguagem.
As vezes me perco nesses detalhes.
Comprei o livro do Pablo (PHP - Programando com Orientação a Objetos) além do Framework com as video aulas e o livro. Material muito bom, espero evoluir bem.
Agradeço a comunidade aqui pela ajuda de sempre!
Show de bola Marcelo, com esse material vc vai aprender muito. Abraço