Inserir dados vários dados em uma tabela com o ID de outra. Tenho 2 tabelas onde eu insiro um cabeçalho em uma delas, depois pego o ID para poder adicionar vários valores em outra tabela. Quando é inserido o primeiro item, o segundo gerar um erro de sql onde vejo que o sistema tenta atualizar e não inserir o segundo valor. segue código: ...
HT
Inserir dados vários dados em uma tabela com o ID de outra.  
Tenho 2 tabelas onde eu insiro um cabeçalho em uma delas, depois pego o ID para poder adicionar vários valores em outra tabela. Quando é inserido o primeiro item, o segundo gerar um erro de sql onde vejo que o sistema tenta atualizar e não inserir o segundo valor.

segue código:

<?php $pocom = new POCOM;                        $pocom->Id_PolCom = $pocom->getLastID() + 1;                         $pocom->Cod_PolCom = $data->nome;                        $pocom->Des_Detalhada = $descricao;                        $pocom->Dat_Cadastro = DATE('Y-m-d');                        $pocom->Dat_Inicio = $data->dataInicio;                        $pocom->store();                        $id = $pocom->Id_PolCom;                        foreach ($politicas as $politica)                         {                                                       $opcoes  = explode(";",$politica);                                                        $item = new PCXPR;                            $item->Id_PolCom  = $pocom->Id_PolCom;                            $item->Cod_Produt = $opcoes[0];                            $item->Qtd_Minimo = $opcoes[1];                            $item->Per_Descon = $opcoes[2];                            $item->Qtd_Min2   = $opcoes[3];                            $item->Per_Dsc2   = $opcoes[4];                            $item->Qtd_Min3   = $opcoes[5];                            $item->Per_Dsc3   = $opcoes[6];                              $item->store();                            unset($item);                                                      }  ?>

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


NR

Habilite os logs e poste aqui o resultado:
<?phpTTransaction::setLogger(new TLoggerSTD());?>

Outra coisa, a parte abaixo é desnecessária, pois a função store sempre preenche o atributo correspondente a chave primária de forma automática:
<?php$pocom->Id_PolCom = $pocom->getLastID() + 1;?>
HT

Obrigado pela diga com o ID.
No o log informa que o primeiro ele insere, já os demais ele tenta atualizar.
<?phpDebug: 2017-03-09 15:41:27 - SELECT max(Id_PolCom) as Id_PolCom FROM POCOMDebug: 2017-03-09 15:41:27 - INSERT INTO POCOM (Cod_PolCom, Des_Detalhada, Dat_Cadastro, Dat_Inicio, Usuario, Cod_TipPrz, Flg_NegDsc, Flg_BlqVerba, Id_PolCom) values ('SGHFGH', 'IMPORTA��O DE ARQUIVO - 09/03/2017', '2017-03-09 15:41:27', '2017-03-09', 'UPLOAD', 'L', 1, 1, 284)Debug: 2017-03-09 15:41:27 - INSERT INTO PCXPR (Id_PolCom, Cod_Produt, Qtd_Minimo, Per_Descon, Qtd_Min2, Per_Dsc2, Qtd_Min3, Per_Dsc3) values (284, '13365', '6', '4.4912', '12', '4.5251', '24', '1.5319')Debug: 2017-03-09 15:41:28 - UPDATE PCXPR SET Cod_Produt = '197754', Qtd_Minimo = '15', Per_Descon = '4.8146', Qtd_Min2 = '31', Per_Dsc2 = '4.8372', Qtd_Min3 = '61', Per_Dsc3 = '4.8482' WHERE (Id_PolCom = 284)Debug: 2017-03-09 15:41:28 - UPDATE PCXPR SET Cod_Produt = '197269', Qtd_Minimo = '6', Per_Descon = '4.8378', Qtd_Min2 = '12', Per_Dsc2 = '4.8523', Qtd_Min3 = '31', Per_Dsc3 = '4.8559' WHERE (Id_PolCom = 284)Debug: 2017-03-09 15:41:28 - UPDATE PCXPR SET Cod_Produt = '197271', Qtd_Minimo = '6', Per_Descon = '4.7897', Qtd_Min2 = '12', Per_Dsc2 = '4.8113', Qtd_Min3 = '31', Per_Dsc3 = '4.8166' WHERE (Id_PolCom = 284)Debug: 2017-03-09 15:41:28 - UPDATE PCXPR SET Cod_Produt = '196854', Qtd_Minimo = '6', Per_Descon = '4.8643', Qtd_Min2 = '12', Per_Dsc2 = '4.8718', Qtd_Min3 = '24', Per_Dsc3 = '4.8764' WHERE (Id_PolCom = 284)Debug: 2017-03-09 15:41:28 - UPDATE PCXPR SET Cod_Produt = '11529', Qtd_Minimo = '15', Per_Descon = '4.6438', Qtd_Min2 = '31', Per_Dsc2 = '4.658', Qtd_Min3 = '61', Per_Dsc3 = '4.6675' WHERE (Id_PolCom = 284)Debug: 2017-03-09 15:41:28 - UPDATE PCXPR SET Cod_Produt = '11527', Qtd_Minimo = '6', Per_Descon = '4.6432', Qtd_Min2 = '12', Per_Dsc2 = '4.6575', Qtd_Min3 = '24', Per_Dsc3 = '4.667' WHERE (Id_PolCom = 284)Debug: 2017-03-09 15:41:28 - UPDATE PCXPR SET Cod_Produt = '11532', Qtd_Minimo = '15', Per_Descon = '4.6779', Qtd_Min2 = '31', Per_Dsc2 = '4.7137', Qtd_Min3 = '61', Per_Dsc3 = '4.7136' WHERE (Id_PolCom = 284)Debug: 2017-03-09 15:41:28 - UPDATE PCXPR SET Cod_Produt = '197959', Qtd_Minimo = '15', Per_Descon = '4.8115', Qtd_Min2 = '31', Per_Dsc2 = '4.8198', Qtd_Min3 = '61', Per_Dsc3 = '4.8144' WHERE (Id_PolCom = 284)Debug: 2017-03-09 15:41:28 - UPDATE PCXPR SET Cod_Produt = '198758', Qtd_Minimo = '2', Per_Descon = '4.5919', Qtd_Min2 = '3', Per_Dsc2 = '4.6182', Qtd_Min3 = '12', Per_Dsc3 = '4.6387' WHERE (Id_PolCom = 284)?>
NR

Id_Polcom é a chave primária das 2 tabelas? Imagino que na tabela PCXPR essa coluna deva ser uma chave estrangeira para a tabela POCOM. Nesse caso você deveria ter outra coluna como chave primária na tabela PCXPR. Se já houver outra coluna no banco de dados verifique seu model PCXPR, pois a constante PRIMARYKEY deve estar apontando erroneamente para Id_Polcom.
HT

tenho uma tabela que não tem chave, com os campos cod_produto, lote e quantidade. Quando tento inserir um objeto que tem o mesmo código, o sistema tenta atualizar esse objeto, fazendo com que os demais sobrescreva. O que tenho que fazer para que isso não ocorra?.