LuKasss 0 Denunciar post Postado Junho 22, 2008 Galera to com essa dúvida. Como pegar o ultimo código inserido na tabela para inserir em outra tabela. ( Chave estrangeira) Fiz esse código aqui mas não da certo: Estou inserindo um dado na tabela Usuário e quero pegar o código da chave primaria inserido(Cod_Usu) na tabela e inserir na tabela Cliente, resumindo, uma chave estrangeira. Aqui vai o código: $table = new Usuario(); $where = $table->getAdapter()->quoteInto('Cpf_Usu = ?', $Cpf_Usu); $usuario = $table->fetchAll($where)->toArray(); if(!empty($usuario)) { $session->mensagem = 'CPF já cadastrado'; Zend_Registry::set('session',$session); $this->_redirect('/cliente/cadastrar'); exit; } $dados = array('Nom_Usu'=>$Nom_Usu, 'Cpf_Usu'=>$Cpf_Usu, 'Tel_Usu'=>$Tel_Usu); $table->insert($dados); //* Aqui insere os dados na tabela Usuário, lembrando que o código na tablea usuário é auto increment. $id = $table->mysql_insert_id(); //* Sem usar o ZF eu usava essa função para resgatar o ultimo id inserido na tabela. Mas no ZF não funciona :-[ $cliente = new Cliente(); $dados = array('Usuario_Cod_Usu'=>$id, 'Log_Cli'=>$Log_Cli, 'Sen_Cli'=>$Sen_Cli); //* Aqui eu teria que inserir no campo Usuario_Cod_Usu o código que acabou de ser inserido na tabela Usuario, lembrando que o código na tablea usuário é auto increment. $cliente->insert($dados); Me ajudem galera.. Valeww... Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Junho 23, 2008 http://framework.zend.com/manual/en/zend.d...er.write.insert Example 10.18. Using lastInsertId() for an auto-increment key <?php $db->insert('bugs', $data); // return the last value generated by an auto-increment column $id = $db->lastInsertId(); Compartilhar este post Link para o post Compartilhar em outros sites
LuKasss 0 Denunciar post Postado Junho 25, 2008 Deu esse erro: Fatal error: Call to undefined method Usuario::lastInsertId() in C:\xampp\htdocs\resta\application\controllers\ClienteController.php on line 69 O código é esse: $usuario = new Usuario(); $data = array('Log_Usu' => $Log_Usu, 'Sen_Usu' => $Sen_Usu, 'Nom_Usu' => $Nom_Usu, 'Cpf_Usu' => $Cpf_Usu, 'Tel_Usu' => $Tel_Usu,); $usuario->insert($data); $id = $usuario->lastInsertId(); Compartilhar este post Link para o post Compartilhar em outros sites
azizvc 0 Denunciar post Postado Junho 25, 2008 acho que você pode fazer assim: $tabelaUsuario = new Usuario(); $regUsuario = $tabelaUsuario->fetchNew(); $regUsuario ->Log_Usu = $Log_Usu; $regUsuario ->Sen_Usu = $Sen_Usu; //assim por diante $regUsuario ->save(); $id = $regUsuario ->id; //id no caso seria o nome do campo auto-increment da sua tabela Compartilhar este post Link para o post Compartilhar em outros sites
LuKasss 0 Denunciar post Postado Junho 25, 2008 Valeww azizvc.. Deu certo... Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Junho 25, 2008 só pra você saber $db->lastInsertId() pertence a classe principal e ela nao foi extendida para sua classe usuarios, por isso que o metodo nao existia nela Compartilhar este post Link para o post Compartilhar em outros sites
LuKasss 0 Denunciar post Postado Junho 25, 2008 A minha classe Usuarios que tem que extender?? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Junho 25, 2008 Nao, no exemplo que te passei funciona daquele jeito mesmo, mas se quiser usar o metodo lastInsertId, que seria o mais correto faz assim: $id = $db->lastInsertId('usuarios'); veja mais detalhes no manual http://framework.zend.com/manual/en/zend.d...er.write.insert Example 10.19. Using lastInsertId() for a sequence Compartilhar este post Link para o post Compartilhar em outros sites
azizvc 0 Denunciar post Postado Junho 25, 2008 a forma como eu lhe passei ja retorna corretamente o id do registro pois o metodo save() ja usa internamente o lastInsertId() para atualizar o objeto do registro. você só vai precisar usar o lastInsertId() se for fazer inserções diretas usando o Zend_Db_Adapter Compartilhar este post Link para o post Compartilhar em outros sites
LuKasss 0 Denunciar post Postado Junho 26, 2008 Ah ok... Brigadão... Compartilhar este post Link para o post Compartilhar em outros sites