FW
Salvar Dados - TMultifield
Fechado
Pessoal,
Estou com dificuldade para salvar os dados de uma TMultifield, nos exemplos que vi, todos usam composições, mas no meu caso tenho uma classe apenas. E não estou conseguindo salvar.
Basicamente tenho 1 id de viagem e vários IDs de reembolsos, de tipos diferentes, da maneira que fiz, ele só salva o ultimo registro da TMultifield.
Como posso fazer?
Minha classe Reembolso:
Meu método para salvar:
Obrigado.
Estou com dificuldade para salvar os dados de uma TMultifield, nos exemplos que vi, todos usam composições, mas no meu caso tenho uma classe apenas. E não estou conseguindo salvar.
Basicamente tenho 1 id de viagem e vários IDs de reembolsos, de tipos diferentes, da maneira que fiz, ele só salva o ultimo registro da TMultifield.
Como posso fazer?
Minha classe Reembolso:
- <?php
- class Reembolso extends TRecord
- {
- const TABLENAME = 'tb_reembolso';
- const PRIMARYKEY= 'id_reembolso';
- const IDPOLICY = 'max'; // {max, serial}
-
- /**
- * Constructor method
- */
- public function __construct(2540_reembolso = NULL)
- {
- parent::__construct(2540_reembolso);
- parent::addAttribute('id_viagem');
- parent::addAttribute('id_tipo_reembolso');
- parent::addAttribute('valor');
- parent::addAttribute('quem');
- parent::addAttribute('quando');
- }
- }
- ?>
Meu método para salvar:
- <?php
- public function onSave($param)
- {
- try
- {
- TTransaction::open('gestao_viagens');
-
- $object = $this->form->getData('Reembolso');
-
- 2540_viagem = $object->id_viagem;
- $this->form->validate();
-
- // put the data back to the form
- //$this->form->setData($data);
-
- $object->id_viagem = 2540_viagem;
- $object->quem = TSession::getValue('id_user');
- $object->quando = date("Y-m-d H:i:s");
-
- if ($object->reembolso)
- {
- foreach ($object->reembolso as $reembolsos)
- {
- $object->id_tipo_reembolso = $reembolsos->tipo_reembolso;
- $object->valor = $reembolsos->valor;
- $object->store;
- }
- }
-
- //$object->store;
-
- TTransaction::close();
-
- $this->form->setData($object);
-
- new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e)
- {
- new TMessage('error', '<b>Error:</b> ' . $e->getMessage());
- TTransaction::rollback();
- }
- }
- ?>
Obrigado.
Pessoal,
Descobri o que ocorre, fiz uma alteração no fonte, acho que está mais correto.
Ele pega o primeiro registro e faz um INSERT, e para os demais registros da MultiField, ele gera UPDATES, a questão agora é como evitar isto?? E realizar apenas inserts???
Adicionei a instancia do objeto dentro do FOR, e inseriu registro a registro.
Não sei se é a maneira mais correta para isto, mas funcionou.