Como tratar um array para apresentar no TMultiField? Boa noite. Estou precisando de um help pessoal! PROBLEMA: Estou trabalhando com um TMultiField (lista os produtos de um cadastro de entrada de produtos), sendo que quando vou editar eu preciso carregar nele dados de duas tabelas: Produto e Itens_Entrada. Eu precisei fazer uma query manual, pra carregar os dados dessas duas tabelas. O problema é que quando vou pegar essas informações...
EB
Como tratar um array para apresentar no TMultiField?  
Fechado
Boa noite.

Estou precisando de um help pessoal!

PROBLEMA: Estou trabalhando com um TMultiField (lista os produtos de um cadastro de entrada de produtos), sendo que quando vou editar eu preciso carregar nele dados de duas tabelas: Produto e Itens_Entrada.

Eu precisei fazer uma query manual, pra carregar os dados dessas duas tabelas. O problema é que quando vou pegar essas informações para apresentar no TMultiField é apresentado a seguinte mensagem: Notice: Trying to get property of non-object in C:Program Files/wamp/www/almoxarifado/libadiantiwidgetformTMultiField.php on line 145

Quando dou um var_dump no onEdit o array está vindo conforme a imagem em anexo abaixo.

Então eu gostaria de saber como devo tratar esses dados na função getProdutos para que os mesmos sejam apresentados no TMultiField?

 
  1. <?php
  2. function onEdit($param) {
  3. try {
  4. if (isset($param['key'])) {
  5. $key = $param['key'];
  6. TTransaction::open('permission');
  7. $object = new Entrada($key);
  8. $object->produtos = $object->getProdutos();
  9. var_dump($object->produtos); die();
  10. $object->dataentrada = TDate::date2br($object->dataentrada);
  11. $object->datanotafiscal = TDate::date2br($object->datanotafiscal);
  12. $this->form->setData($object);
  13. TTransaction::close();
  14. } else {
  15. $this->form->clear();
  16. }
  17. } catch (Exception $e) {
  18. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  19. TTransaction::rollback();
  20. }
  21. }
  22. ?>


 
  1. <?php
  2. /**
  3. * Method getProdutos
  4. * @return Collection de Produto
  5. */
  6. public function getProdutos()
  7. {
  8. $produtos = array();
  9. $repository = new TRepository('EntradaItem');
  10. $criteria = new TCriteria;
  11. $criteria->add(new TFilter('id_entrada', '=', $this->id));
  12. $entrada_produtos = $repository->load($criteria);
  13. if ($entrada_produtos)
  14. {
  15. foreach ($entrada_produtos as $entr_prod)
  16. {
  17. try {
  18. TTransaction::open('permission');
  19. $conn = TTransaction::get();
  20. $sth = $conn->prepare('SELECT PROD.ID, PROD.DESCRICAO, ITENS.QTDE, ITENS.VALORUNITARIO
  21. FROM estoque_produto PROD
  22. INNER JOIN estoque_itens_entrada ITENS
  23. ON ITENS.ID_PRODUTO = PROD.ID
  24. WHERE PROD.ID = ?');
  25. $sth->execute(array($entr_prod->id_produto));
  26. $result = $sth->fetchAll();
  27. TTransaction::close();
  28. } catch (Exception $ex) {
  29. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  30. }
  31. }
  32. }
  33. return $result;
  34. }
  35. ?>


Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (1)


PD

Edilaine,

O formato a ser recebido pela TMultiField é um array de objetos, e o método fetchAll() da PDO retorna um vetor comum.
Experimente ->fetchAll( PDO::FETCH_CLASS );

Att,
Pablo