Erro ao salvar campos multivalues Ola a Todos, Estou tendo problema ao salvar campos multi values, alguém pode me ajudar ? Trecho em que ocorre o erro: ...
RB
Erro ao salvar campos multivalues  
Ola a Todos,

Estou tendo problema ao salvar campos multi values, alguém pode me ajudar ?

Trecho em que ocorre o erro:
 
  1. <?php
  2. if(!empty($param['cep']) And is_array($param['cep']))
  3. {
  4. foreach($param['cep'] as $row => $object)
  5. {
  6. $endereco = new Endereco;
  7. $cep = str_replace("-", "", $param['cep'][$row]);
  8. $objects = $endereco->BuscaCepBanco($cep);
  9. if(!empty($objects))
  10. {
  11. // show form values inside a window
  12. // $win = TWindow::create('Object id', 0.6, 0.8);
  13. //$win->add( '<pre>'.str_replace("\n", '<br>', print_r($objects, true) ).'</pre>' ); ao descomentar este trecho e comentar o trecho abaixo, verifiquei que esta retornando os valores.
  14. $pessoa_endereco = new PessoaEndereco;
  15. $pessoa_endereco->pessoa_id = $pessoa_id;
  16. $pessoa_endereco->endereco_id = $objects->id;
  17. $pessoa_endereco->tipoendereco_id = $param['tipo_endereco_id'][$row];
  18. $pessoa_endereco->numero = $param['numero'][$row];
  19. $pessoa_endereco->complemento = $param['complemento'][$row];
  20. $pessoa_endereco->store();
  21. }
  22. //$win->show(); para testar descomentar este trecho
  23. }
  24. }
  25. ?>

Segue imagem em anexo com o retorno dos método.


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


NR

Qual é o erro?
RB

Nataniel, bom dia,

na realidade os dados ( Id) retornado do método BuscaCepBanco não estão sendo gravados na tabela PessoaEndereço;
NR

Pelo que dá para perceber no print, a função BuscaCepBanco está retornando um array.

Não sei ao certo qual o comportamento desejado, mas, se retornar sempre um único registro, acesse a posição 0 do array:
 
  1. <?php
  2. $pessoa_endereco->endereco_id = $objects[0]->id;
  3. ?>
RB

Então Natanael, a função buscacepbanco verifiica se existe o deposita na base, se já EXISTIR retorna o id do endereço, porém na0 estou conseguindo pegar o ideal retornado, fiz conforme indicou porém não obtive sucesso.
RB

Retificando a mensagem anterior.

O que acontece eu preciso verificar sempre se o cep já existe na base de dados com o método BuscaCepBanco, caso exista é retornado o id de cada endereço

e depois preciso gravar id retornado na tabela PessoaEndereco ( id) para cada endereço.


fiz conforme indicou porém não obtive sucesso.


NR

Rubens, fiz confusão, a variável $objects é um array associativo. Faça:
 
  1. <?php
  2. $pessoa_endereco->endereco_id = $objects['id'];
  3. ?>
RB

Nataniel,

O negócio esta encantado, fiz como indicou e não grava, simplesmente fica com a mensagem carregando, até dar o erro :

SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction .

Você alguma sugestão melhor do que o jeito que estou usando para gravar os dados.