Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LuKasss

Pegando o ultimo id da tabela!

Recommended Posts

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.