Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Gravação master detail Tenho um formulario Master detail para cadastrar cliente, tenho duas tabelas diferentes no banco para o master e para o detail(Que exibe uma datagrid caso o usuario queira cadastrar mais de um endereço), mas só consigo salvar os dados na tabela referente a parte do formulario que é Master. como posso salvar nas duas tabelas? abaixo minha função OnSave ...
G
Gravação master detail  
Tenho um formulario Master detail para cadastrar cliente, tenho duas tabelas diferentes no banco para o master e para o detail(Que exibe uma datagrid caso o usuario queira cadastrar mais de um endereço), mas só consigo salvar os dados na tabela referente a parte do formulario que é Master. como posso salvar nas duas tabelas?


abaixo minha função OnSave

  1. <?php
  2. public function onSave($param)
  3.     {
  4.         try
  5.         {
  6.             // open a transaction with database
  7.             TTransaction::open('sgidb');
  8.             $this->form->validate();
  9.             $data $this->form->getData();
  10.             
  11.             
  12.             $master = new Cliente;
  13.             $master->fromArray( (array) $data);
  14.             $master->store();
  15.             
  16.             ClienteEnd::where('cliente_id''='$master->cliente_id)->delete();
  17.             
  18.             if( $param['ClienteEnd_list_seq_end'] )
  19.             {
  20.                 foreach( $param['ClienteEnd_list_seq_end'] as $key => $item_id )
  21.                 {
  22.                     $detail = new ClienteEnd;
  23.                     $detail->seq_end  $param['ClienteEnd_list_seq_end'][$key];
  24.                     $detail->grp_id  $param['ClienteEnd_list_grp_id'][$key];
  25.                     $detail->descr  $param['ClienteEnd_list_descr'][$key];
  26.                     $detail->cpf  $param['ClienteEnd_list_cpf'][$key];
  27.                     $detail->rg  $param['ClienteEnd_list_rg'][$key];
  28.                     $detail->rg_orgao_emissor  $param['ClienteEnd_list_rg_orgao_emissor'][$key];
  29.                     $detail->cnpj  $param['ClienteEnd_list_cnpj'][$key];
  30.                     $detail->ie  $param['ClienteEnd_list_ie'][$key];
  31.                     $detail->ind_ie  $param['ClienteEnd_list_ind_ie'][$key];
  32.                     $detail->im  $param['ClienteEnd_list_im'][$key];
  33.                     $detail->flg_ret_issqn  $param['ClienteEnd_list_flg_ret_issqn'][$key];
  34.                     $detail->ie_suframa  $param['ClienteEnd_list_ie_suframa'][$key];
  35.                     $detail->nome_contato  $param['ClienteEnd_list_nome_contato'][$key];
  36.                     $detail->departamento  $param['ClienteEnd_list_departamento'][$key];
  37.                     $detail->email  $param['ClienteEnd_list_email'][$key];
  38.                     $detail->logradouro  $param['ClienteEnd_list_logradouro'][$key];
  39.                     $detail->numero  $param['ClienteEnd_list_numero'][$key];
  40.                     $detail->comp  $param['ClienteEnd_list_comp'][$key];
  41.                     $detail->bairro  $param['ClienteEnd_list_bairro'][$key];
  42.                     $detail->cep  $param['ClienteEnd_list_cep'][$key];
  43.                     $detail->cidade  $param['ClienteEnd_list_cidade'][$key];
  44.                     $detail->estado  $param['ClienteEnd_list_estado'][$key];
  45.                     $detail->pais_id  $param['ClienteEnd_list_pais_id'][$key];
  46.                     $detail->telefone1  $param['ClienteEnd_list_telefone1'][$key];
  47.                     $detail->telefone2  $param['ClienteEnd_list_telefone2'][$key];
  48.                     $detail->telefone3  $param['ClienteEnd_list_telefone3'][$key];
  49.                     $detail->obs  $param['ClienteEnd_list_obs'][$key];
  50.                     $detail->st_endereco  $param['ClienteEnd_list_st_endereco'][$key];
  51.                     $detail->dt_hr_atualizacao  $param['ClienteEnd_list_dt_hr_atualizacao'][$key];
  52.                     $detail->usr_atualizacao  $param['ClienteEnd_list_usr_atualizacao'][$key];
  53.                     $detail->cliente_id $master->cliente_id;
  54.                     $detail->store();
  55.                 }
  56.             }
  57.             TTransaction::close(); // close the transaction
  58.             
  59.             TForm::sendData('form_Cliente', (object) ['id' => $master->cliente_id]);
  60.             TForm::sendData('form_Cliente', (object) ['id' => $detail->detail_cliente_id]);
  61.             
  62.             new TMessage('info'AdiantiCoreTranslator::translate('Record saved'));
  63.         }
  64.         catch (Exception $e// in case of exception
  65.         {
  66.             new TMessage('error'$e->getMessage());
  67.             $this->form->setData$this->form->getData() ); // keep form data
  68.             TTransaction::rollback();
  69.         }
  70.     }
  71. ?>

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

O código está entrando no if abaixo?
  1. <?php
  2. if( $param['ClienteEnd_list_seq_end'] )
  3. ?>

Habilite a visualização do sql, deve ajudar:
  1. <?php
  2. TTransaction::open('sgidb');
  3. TTransaction::setLogger(new TLoggerSTD);
  4. ?>
G

Ola Nataniel,
Consegui resolver o problema, tive que atribuir o campo de Id da tabela de cliente, mas fiz com o tipo THidden dai então consegui salvar nos dois bancos referenciando.

Obrigado!!