Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Problemas com gravação no banco de dados MYSQL Boa Tarde! Estou com o seguinte problema criei uma tabela e posteriormente acrescentei duas colunas, Membro e Recebe, alterei a classe, contudo, as informações não são inclusas na tabela. Outra coisa os dois TCheckGroup não aparecem marcados utilizando o setValue('s') Será que alguém pode me socorrer? Clase ...
PC
Problemas com gravação no banco de dados MYSQL  
Boa Tarde!
Estou com o seguinte problema criei uma tabela e posteriormente acrescentei duas colunas, Membro e Recebe, alterei a classe, contudo, as informações não são inclusas na tabela.
Outra coisa os dois TCheckGroup não aparecem marcados utilizando o setValue('s')
Será que alguém pode me socorrer?

Clase </>

  1. <?php
  2. class Membro extends TRecord
  3. {
  4.     const TABLENAME 'membro';
  5.     const PRIMARYKEY 'MembroId';
  6.     const IDPOLICY 'max';
  7.     
  8.     private $cargo;
  9.     private $capelania;
  10.     
  11.     public function __construct($MembroId NULL)
  12.     {
  13.         parent::__construct($MembroId);
  14.         
  15.         parent::addAttribute('Nome');
  16.         parent::addAttribute('Endereco');
  17.         parent::addAttribute('Telefone');
  18.         parent::addAttribute('CargoId');
  19.         parent::addAttribute('CapelaniaId'); 
  20.        <bparent::addAttribute('Membro'); </b>
  21.        <bparent::addAttribute('Recebe');</b.>
  22.     }
  23.     
  24.     public function set_cargoCargo $object)
  25.     {
  26.        $this->cargo $object;
  27.        $this->cargoId $object->CargoId;
  28.     }
  29.     
  30.     public function get_cargo()
  31.     {
  32.         if  (empty( $this->cargo) )
  33.         {
  34.             $this->cargo = new Cargo$this->CargoId );
  35.         }
  36.         return $this->cargo;
  37.     }
  38.     
  39.     public function get_capelania()
  40.     {
  41.         if  (empty( $this->capelania) )
  42.         {
  43.             $this->capelania = new Capelania$this->CapelaniaId );
  44.         }
  45.         return $this->capelania;
  46.     }    
  47. }
  48.    
  49. <bFormulário que realiza o cadastro</>
  1. <?php
  2. class MembroForm extends TPage
  3. {
  4.     private $form;
  5.     
  6.     public function __construct($param)
  7.     {
  8.         parent::__construct();
  9.         
  10.         //$this->form = new BootstrapFormBuilder(new TQuickForm);
  11.         $this->form = new BootstrapFormBuilder;
  12.         //$this->form->setFormTitle('Cadastro de Membros');
  13.         $this->form->class 'tform';
  14.         $this->form->style 'width: 800px';
  15.    
  16.         $MembroId = new TEntry('MembroId');
  17.         $Nome = new TEntry('Nome');
  18.         $Endereco = new TEntry('Endereco');
  19.         $Telefone = new TEntry('Telefone');
  20.         $CargoId    = new TDBCombo('CargoId''imepc''Cargo''CargoId''Descricao');
  21.         $CapelaniaId    = new TDBCombo('CapelaniaId''imepc''Capelania''CapelaniaId''Descricao');
  22.         $Membro = new TCheckGroup('Membro');
  23.         $Recebe = new TCheckGroup('Recebe');
  24.         
  25.         $MembroId->setEditable(FALSE);
  26.         
  27.         $Nome->placeholder 'Nome Completo';
  28.         $Nome->addValidation('Nome', new TRequiredValidator);
  29.         $Nome->setSize('100%');
  30.         
  31.         $Endereco->placeholder 'Endereço Completo';
  32.         $Endereco->addValidation('Endereço', new TRequiredValidator);
  33.         $Endereco->setSize('100%');
  34.         
  35.         $Telefone->placeholder '(99) 99999-9999';
  36.         $Telefone->setMask('(99)99999-99999');
  37.         
  38.         //$CargoId->SetValue(1);
  39.         $CargoId->enableSearch();
  40.         //$CapelaniaId->SetValue(1);
  41.         $CapelaniaId->enableSearch();
  42.         
  43.         $itens = array();
  44.         $itens['s'] = 'Sim';
  45.         $itens['n'] = 'Não';
  46.         
  47.         $Membro->setUseButton();
  48.         $Membro->addItems$itens );
  49.         $Membro->setLayout('horizontal');
  50.         $Membro->setValue('s');
  51.         
  52.         $Recebe->setUseButton();
  53.         $Recebe->addItems($itens);
  54.         $Recebe->setLayout('horizontal'); 
  55.         $Recebe->setValue('n');  
  56.         $Recebe->addValidation('Receba', new TRequiredValidator);
  57.         
  58.         $labelCapelania = new TLabel('Tipo de Capelania');
  59.         $labelCapelania->setSize('100');   
  60.         
  61.         $labelCargo = new TLabel('Cargo');
  62.         
  63.         $this->form->addFields( [ $labelCargo ], [ $MembroId ] ) ;
  64.         $this->form->addFields( [new TLabel('Nome') ] , [ $Nome ]  );
  65.         $this->form->addFields( [new TLabel('Endereço') ] , [ $Endereco ]  );
  66.         $this->form->addFields( [new TLabel('Telefone') ] , [ $Telefone ]  );
  67.         $this->form->addFields( [new TLabel('Cargo') ] , [ $CargoId ]  , [ $labelCapelania ] , [ $CapelaniaId ] );
  68.       
  69.         $label1 = new TLabel('Observações''#7D78B6'12'bi');
  70.         $label1->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%';
  71.         
  72.         $this->form->addContent( [$label1] );
  73.         
  74.         $this->form->addFields( [new TLabel('Membro Ativo?') ] , [ $Membro ]  , [new TLabel('Cesta Básica?') ] , [ $Recebe ] );
  75.         
  76.         $salvar = new TAction( array($this'onSave') );
  77.         $novo = new TAction( array($this'onClear') );
  78.         
  79.         $this->form->addAction('Salvar'$salvar'fa:save green');
  80.         $this->form->addAction('Novo'$novo'fa:plus-circle green');
  81.         
  82.         $panel = new TPanelGroup('Cadastro de Membros');
  83.         $panel->add($this->form);
  84.         
  85.         $vbox = new TVBox;
  86.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));    
  87.         $vbox->add($panel);
  88.         parent::add($vbox);        
  89.     }
  90.     
  91.      public function onClear($param)
  92.     {
  93.         $this->form->cleartrue );
  94.     }
  95.     
  96.     public function onEdit($param)
  97.     {
  98.         try
  99.         {
  100.             if (isset($param['key']) )
  101.             {
  102.                 $key $param['key'];
  103.                 TTransaction::open('imepc');
  104.                 TTransaction::setLogger(new TLoggerSTD);
  105.                 
  106.                 $membro = new Membro($key);
  107.                 
  108.                 $this->form->setData$membro );
  109.                 
  110.                 TTransaction::close();
  111.             }
  112.         }
  113.         catch(Exception $e)
  114.         {
  115.             new TMessage('error'$e->getMessage() );            
  116.         }
  117.     }
  118.     public function onSave($param)
  119.     {
  120.         try
  121.         {
  122.             TTransaction::open('imepc');
  123.             
  124.            //$data = $this->form->getData('Membro');
  125.            //$data = $this->form->getData();
  126.            $data $this->form->getData();
  127.            
  128.            $membro = new Membro;
  129.            $membro->fromArray( (array) $data );
  130.            $membro->store();
  131.             
  132.             $this->form->validate();           
  133.             
  134.             $membro->store();
  135.             $data->MembroId $membro->MembroId;
  136.             $this->form->setData$data );
  137.             
  138.             new TMessage('info',  'Registro Salvo com Sucesso!!!');
  139.             //new TMessage('info', json_encode( $data ) );
  140.             
  141.             TTransaction::close();
  142.         }
  143.             
  144.         catch (Exception $e)
  145.         {
  146.             new TMessage('error'$e->getMessage() );
  147.             TTransaction::rollback();
  148.         }
  149.      
  150.     }
  151.     
  152. }

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


PC

Complementando!
O insert está sendo enviado sem as duas colunas criadas.

Debug: 2017-09-26 17:38:51 - INSERT INTO membro (MembroId, Nome, Endereco, Telefone, CargoId, CapelaniaId) values (20, 'Teste 5', 'Levantar teste 5', NULL, '2', '2')
AE

Olá este é proposital?

parent::addAttribute('Membro');

retire-os e tente novamente......nos retorne
AE

o b de bold.....
PC

O b coloquei porque achei que fosse destacar as linhas.
NR

Como o checkgroup permite selecionar mais de uma opção, o getData sempre retorna um array para campos desse tipo. Você precisa tratar essa informação na funçãon onSave.
PC

Nataniel bom dia!

Quando eu instancio um novo objeto e faço o store para fazê-lo eu utilo o fromArray e transformo o retorno do form em array.
É esse tratamento que você se refere?

att.
PC

André bom dia!

Eu removi e inclui novamente e os novos atributos não são reconhecidos, acho que deve ser algum bug do adianti.

att.
NR

Paulo, não é bug do Adianti. A questão é que você está passando um array para um atributo e no momento do store esse valor é desconsiderado por não ser um valor válido.

Se a ideia é permitir que o usuário selecione somente 1 opção, não deveria usar um radio no lugar do check? Com o check ele vai conseguir selecionar 'Sim' e 'Não' ao mesmo tempo. Trocando para radio já deve resolver o problema.
PC

Senhores agradeço a ajuda!

Resolvi o problema entendi o erro que estava cometendo utilizei o TRadioGroup, problema resolvido.