Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Agregação com TDBUniqueSearch Pessoal tenho um cenário aonde tenho tres tabelas, sendo elas: fornecedor,conta_a_pagar e uma terceira tabela conta_a_pagar_fornecedor, acontece que eu gostaria de usar o TDBUniqueSearch para selecionar o Fornecedor. estou tentando mas com os exemplos que consegui do adianti não consigo gravar na tabela de relacionamento usando TDBUniqueSearch *observação : da forma que está funciona apenas...
TC
Agregação com TDBUniqueSearch  
Pessoal tenho um cenário aonde tenho tres tabelas, sendo elas: fornecedor,conta_a_pagar e uma terceira tabela conta_a_pagar_fornecedor, acontece que eu gostaria de usar o TDBUniqueSearch para selecionar o Fornecedor. estou tentando mas com os exemplos que consegui do adianti não consigo gravar na tabela de relacionamento usando TDBUniqueSearch
*observação : da forma que está funciona apenas se eu usar TDBCheckgroup ou TDBMultifiel, porém não atende o meu caso.

os metodos na model estão assim:

public function clearparts()
{
$this->fornecedores = array();
}


public function addFornecedor(Fornecedor $object )
{
$this->fornecedores[] = $object;
}

public function getFornecedores() {
return $this->fornecedores;
}

public function load($id)
{

$this->fornecedores = parent::loadAggregate('Fornecedor', 'ContaAPagarFornecedor', 'conta_a_pagar_id', 'fornecedor_id', $id);

return parent::load($id);
}

public function store()
{
parent::store();

//Relacionamento do tipo agregação
parent::saveAggregate('ContaAPagarFornecedor', 'conta_a_pagar_id', 'fornecedor_id', $this->id, $this->fornecedores);

}

//////no controller estão assim:
$fornecedor_id = new TDBUniqueSearch('fornecedor_id','meubanco', 'Fornecedor','id','identificacao'); //se colocar TDBCheckgroup então grava na tabela de relacioanmento
$this->form->addFields([new TLabel('Forncedor:')],[$fornecedor_id]);

public function onSave($param = null)
{
try
{
TTransaction::open('meubanco');

$this->form->validate();
$object = new ContaAPagar;
$data = $this->form->getData();
$object->fromArray( (array) $data);



if ( !empty($param['fornecedor_id']) )
{
foreach ($param['fornecedor_id'] as $fornecedor_id)
{
// add fornecedor para a conta
$object->addFornecedor(new Fornecedor($fornecedor_id));
}
}

$object->store();


$data->id = $object->id;
$this->form->setData($data);
TTransaction::close();

new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
$this->form->setData( $this->form->getData() );
TTransaction::rollback();
}
}


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 (1)


AS

deixa o seu onSave assim

public function onSave()
{
try
{
TTransaction::open('hazaq_erp');

$this->form->validate();
$object = new ContaAPagar;
$data = $this->form->getData();
$object->fromArray( (array) $data);




if ( !empty($data->fornecedor_id) )
{
foreach ($data->fornecedor_id as $fornecedor_id)
{
// add fornecedor para a conta
$object->addFornecedor(new Fornecedor($fornecedor_id));
}


$object->store();


$data->id = $object->id;
$this->form->setData($data);
TTransaction::close();

new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
$this->form->setData( $this->form->getData() );
TTransaction::rollback();
}
}