Ir para conteúdo
Fórum Script Brasil
  • 0

Como gravar dados em duas tabelas diferentes?


rfmapp

Pergunta

Vou dar um exemplo simples, mas que serve bem ao que preciso. Digamos que eu preciso fazer um sistema para cadastrar os cursos feitos por funcionários. Olhando para o banco, terei, entre outras, essas 3 tabelas, as quais fazem parte de minha dúvida:

tb_funcionário (id, nome, sobrenome, setor);

tb_curso (id, nome, data, duracao);

tb_funcionario_curso(id_funcionario, id_curso, sitacao);

Do lado do banco, isto está claro para mim. Do lado da aplicação é onde se concentra minha dúvida. No momento em que estou cadastrando o funcionário, como fazer para incluir os cursos que ele fez? No momento em que estou passando os dados que serão gravados na tabela tb_funcionario, via POST, como fazer para também enviar os dados que serão gravados na tabela tb_funcionario_curso, já que essa tabela requer a id do usuário, que está sendo enviada no mesmo POST?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

A melhor forma de se fazer transações com DB em PHP é usando o DOCTRINE, você mapeá as tabelas transformando em entidades e na hora que você salvar a entidade pai as filhas são comitadas automaticamente, porem se você quer fazer isto nativamente, uma forma mais rápida seria você criar um método saveAfter() a ser acessado após o cadastro na tabela principal.

function saveOrUpdate (){
try {
    $sth = $dbh->prepare('INSERT INTO tabela VALUES (?,?)');
    $sth->execute(array($this->dado1, $this->dado1));
    saveAfter($sth->fetch(PDO::FETCH_ASSOC)); // chama metodo passando a id do registro inserido na tabela pai
} catch (Exception $e){
   echo 'faio';
}
}

function saveAfter($idPai){
// TODO: inserts nas tabelas filhas
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...