Erro de inserção com MultField Olá pessoal, estou tentando salvar no banco dados do MultField, mas está dando o seguinte erro: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'titular_id' código de salvamento: ...
MO
Erro de inserção com MultField  
Olá pessoal, estou tentando salvar no banco dados do MultField, mas está dando o seguinte erro:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'titular_id'

código de salvamento:
 
  1. <?php
  2. public function onSave($param)
  3. {
  4. try
  5. {
  6. TTransaction::open('permission'); // open a transaction
  7. /**
  8. // Enable Debug logger for SQL operations inside the transaction
  9. TTransaction::setLogger(new TLoggerSTD); // standard output
  10. TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
  11. **/
  12. $this->form->validate(); // valida dados do form
  13. $object = new Titular; // cria os objetos em branco
  14. $data = $this->form->getData(); // pega dados do form como array
  15. $object->fromArray( (array) $data); // lê os objetos do array
  16. //Formato americano para salvar no banco
  17. $renda_total = str_replace('.','',$object->rendatotal);
  18. $renda_total = str_replace(',','.',$renda_total);
  19. $object->rendatotal = $renda_total;
  20. $valor_beneficio = str_replace('.','',$object->valorbeneficio);
  21. $valor_beneficio = str_replace(',','.',$valor_beneficio);
  22. $object->valorbeneficio = $valor_beneficio;
  23. //Formato americano para salvar no banco
  24. $object->datemisrg = TDate::date2us($object->datemisrg);
  25. $object->datnasc = TDate::date2us($object->datnasc);
  26. // salva os objetos
  27. $object->store();
  28. // get the generated id
  29. $data->cod_titular = $object->cod_titular;
  30. // delete details
  31. $old_items_prog = Programa::where('titular_id', '=', $object->cod_titular)->load();
  32. $keep_items_prog = array();
  33. $message = '';
  34. //var_dump($data);
  35. if ($data->programas)
  36. {
  37. foreach ($data->programas as $programa)
  38. {
  39. //$programa->titular_id = $object->cod_titular;
  40. //$message .= 'Cod.Programa: '.$programa->id_programa .'<br>'. 'Cod.Titular.: '.$programa->titular_id .'<br>'.'Cod.Tip Prog: '.$programa->tpprograma_id.'<br>';
  41. if ( empty($programa->id_programa) ) // Se não tiver o código é novo registro
  42. {
  43. $detail_prog = new Programa;
  44. }
  45. else
  46. {
  47. $detail_prog = Programa::find($programa->id_programa);
  48. }
  49. $detail_prog->titular_id = $object->cod_titular;
  50. $detail_prog->tpprograma_id = $programa->tpprograma_id;
  51. print 'Cod.Titular: '.$detail_prog->titular_id;
  52. $detail_prog->store();
  53. $keep_items_prog[] = $detail_prog->id_programa;
  54. }
  55. new TMessage('info', $message);
  56. }
  57. if ($old_items_prog)
  58. {
  59. foreach ($old_items_prog as $old_item_prog)
  60. {
  61. if (!in_array( $old_item_prog->id_programa, $keep_items_prog))
  62. {
  63. $old_item_prog->delete();
  64. }
  65. }
  66. }
  67. ?>




Modelo do Programa
 
  1. <?php
 
  1. <?php
  2. /**
  3. * Programa Active Record
  4. * @author <your-name-here>
  5. */
  6. class Programa extends TRecord
  7. {
  8. const TABLENAME = 'programa';
  9. const PRIMARYKEY= 'id_programa';
  10. const IDPOLICY = 'serial'; // {max, serial}
  11. private $tpprograma;
  12. /**
  13. * Constructor method
  14. */
  15. public function __construct($id = NULL, $callObjectLoad = TRUE)
  16. {
  17. parent::__construct($id, $callObjectLoad);
  18. parent::addAttribute('titular_id');
  19. parent::addAttribute('tpprograma_id');
  20. }
  21. /**
  22. * Method set_tpprograma
  23. * Sample of usage: $programa->tpprograma = $object;
  24. * @param $object Instance of Tpprograma
  25. */
  26. public function set_tpprograma(Tpprograma $object)
  27. {
  28. $this->tpprograma = $object;
  29. $this->tpprograma_id = $object->id;
  30. }
  31. /**
  32. * Method get_tpprograma
  33. * Sample of usage: $programa->tpprograma->attribute;
  34. * @returns Tpprograma instance
  35. */
  36. public function get_tpprograma()
  37. {
  38. // loads the associated object
  39. if (empty($this->tpprograma))
  40. $this->tpprograma = new Tpprograma($this->tpprograma_id);
  41. // returns the associated object
  42. return $this->tpprograma;
  43. }
  44. /**
  45. * Method get_nome_prog
  46. * Sample of usage: $equipamento->tp_equipamento->attribute;
  47. * @returns TpEquipamento instance
  48. */
  49. function get_nome_prog()
  50. {
  51. if (empty($this->programa))
  52. $this->programa = new TpPrograma($this->tpprograma_id);
  53. return $this->programa->nome_prog;
  54. }
  55. }
  56. ?>



var_dump($data):

object(stdClass)[740]
public 'cod_titular' => string '1' (length=1)
public 'nome' => string 'Marcos Duarte' (length=13)
public 'apelido' => string 'Duarte' (length=6)
public 'sexo' => string '1' (length=1)
public 'escolaridade_id' => string '10' (length=2)
public 'cpf' => string '442.915.901-72' (length=14)
public 'nis' => string '1234567788' (length=10)
public 'celular1' => string '(85)11111-1111' (length=14)
public 'celular2' => string '(85)11111-1111' (length=14)
public 'telefone' => string '' (length=0)
public 'contato' => string 'Edna' (length=4)
public 'pai' => string 'Geraldo Duarte' (length=14)
public 'mae' => string 'Maria da Penha' (length=14)
public 'rg' => string '925688' (length=6)
public 'viarg' => string '1ª' (length=3)
public 'datemisrg' => string '06/01/0001' (length=10)
public 'orgexprg' => string 'SSP' (length=3)
public 'ufrg' => string '9' (length=1)
public 'datnasc' => string '08/12/0001' (length=10)
public 'naturalidade' => string 'Brasília' (length=9)
public 'logradouro_id' => string '102' (length=3)
public 'cep' => string '60125001' (length=8)
public 'endereco' => string 'José Vilar' (length=11)
public 'bairro_id' => string '12' (length=2)
public 'numero' => string '3397' (length=4)
public 'complemento' => string 'Baixos' (length=6)
public 'pontoref' => string 'Motel Shanadu' (length=13)
public 'tipo_nec_esp_id' => string '1' (length=1)
public 'qualnecespecial' => string 'NENHUM' (length=6)
public 'necadap' => string '2' (length=1)
public 'estado_civil_id' => string '2' (length=1)
public 'sitconjugal_id' => string '2' (length=1)
public 'qtdpesres' => string '5' (length=1)
public 'ocupacaoprof_id' => string '106' (length=3)
public 'tempo_trabalho_id' => string '5' (length=1)
public 'situacao_trab_id' => string '2' (length=1)
public 'localtrabalho' => string 'Prefeitura de Maracanau' (length=23)
public 'renda_mensal_id' => string '4' (length=1)
public 'renda_comp_id' => string '1' (length=1)
public 'beneficio_id' => string '1' (length=1)
public 'valorbeneficio' => string '100,30' (length=6)
public 'rendatotal' => string '2.350,50' (length=8)
public 'declaracao' => string '2' (length=1)
public 'situacaoderua' => string '2' (length=1)
public 'desistente' => string '2' (length=1)
public 'assocmorador' => string 'NENHUM' (length=6)
public 'participa' => string '2' (length=1)
public 'qtde_comodos_id' => string '1' (length=1)
public 'tempo_moradia_id' => string '1' (length=1)
public 'elim_dejetos_id' => string '1' (length=1)
public 'sit_fornec_id' => string '1' (length=1)
public 'numero_familias_habit_id' => string '1' (length=1)
public 'estado_habitacao_id' => string '1' (length=1)
public 'risco_localizacao_id' => string '1' (length=1)
public 'unidade_sanitaria_id' => string '1' (length=1)
public 'telefone_id' => string '1' (length=1)
public 'tempono_munic_id' => string '1' (length=1)
public 'energia_eletrica_id' => string '1' (length=1)
public 'uso_imovel_id' => string '1' (length=1)
public 'caracterisca_imov_id' => string '1' (length=1)
public 'transporte_id' => string '1' (length=1)
public 'ilum_publica_id' => string '1' (length=1)
public 'tipo_imovel_id' => string '1' (length=1)
public 'trat_dagua_id' => string '1' (length=1)
public 'destino_lixo_id' => string '1' (length=1)
public 'forma_ocupacao_id' => string '1' (length=1)
public 'local_banheiro_id' => string '1' (length=1)
public 'abast_dagua_id' => string '1' (length=1)
public 'id_equipamento' => string '' (length=0)
public 'nome_equip' => string '' (length=0)
public 'tp_equipamento_id' => string '' (length=0)
public 'id_programa' => string '' (length=0)
public 'nome_prog' => string '' (length=0)
public 'tpprograma_id' => string '' (length=0)
public 'id_projeto' => string '' (length=0)
public 'nome_proj' => string '' (length=0)
public 'tpprojeto_id' => string '' (length=0)
public 'observacao' => string '<p>teste</p>' (length=12)
public 'equipamentos' =>
array (size=8)
0 =>
object(stdClass)[754]
public 'id_equipamento' => string '91' (length=2)
public 'tp_equipamento_id' => string '1' (length=1)
public 'nome_equip' => string 'Creche Publica' (length=14)
1 =>
object(stdClass)[755]
public 'id_equipamento' => string '92' (length=2)
public 'tp_equipamento_id' => string '2' (length=1)
public 'nome_equip' => string 'Creche Comunitaria' (length=18)
2 =>
object(stdClass)[756]
public 'id_equipamento' => string '93' (length=2)
public 'tp_equipamento_id' => string '3' (length=1)
public 'nome_equip' => string 'Escola EF Publica' (length=17)
3 =>
object(stdClass)[757]
public 'id_equipamento' => string '94' (length=2)
public 'tp_equipamento_id' => string '4' (length=1)
public 'nome_equip' => string 'Escola EM Publica' (length=17)
4 =>
object(stdClass)[758]
public 'id_equipamento' => string '95' (length=2)
public 'tp_equipamento_id' => string '8' (length=1)
public 'nome_equip' => string 'Centro Comunitario' (length=18)
5 =>
object(stdClass)[759]
public 'id_equipamento' => string '96' (length=2)
public 'tp_equipamento_id' => string '9' (length=1)
public 'nome_equip' => string 'CRAS' (length=4)
6 =>
object(stdClass)[760]
public 'id_equipamento' => string '97' (length=2)
public 'tp_equipamento_id' => string '10' (length=2)
public 'nome_equip' => string 'Instituicao Religiosa' (length=21)
7 =>
object(stdClass)[761]
public 'id_equipamento' => string '100' (length=3)
public 'tp_equipamento_id' => string '7' (length=1)
public 'nome_equip' => string 'Hospital Publico' (length=16)
public 'programas' =>
array (size=2)
0 =>
object(stdClass)[751]
public 'id_programa' => string '1' (length=1)
public 'tpprograma_id' => string '1' (length=1)
public 'nome_prog' => string 'RESIDENCIAL BLANCHARD GIRÃO' (length=28)
1 =>
object(stdClass)[750]
public 'id_programa' => string '' (length=0)
public 'tpprograma_id' => string '2' (length=1)
public 'nome_prog' => string 'RESIDENCIAL VIRGÍLIO TÁVORA I' (length=31)
public 'projetos' =>
array (size=1)
0 =>
object(stdClass)[753]
public 'id_projeto' => string '1' (length=1)
public 'tpprojeto_id' => string '1' (length=1)
public 'nome_proj' => string 'MCMV' (length=4)


Agradeço desde já a ajuda

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


LC

Este campo (titular_id) na sua tabela está como index unique ?
MO

Leandro Coelho, você tinha toda razão, nos campos de chave estrangeira estavam com titular_id unique no index, obrigado pela atenção