Então, mas uma pegadinha do malandro!
Normalmente, quando estamos criando Models customizamos até mesmo o nome dos métodos padrões da classe Zend_Db_Table_Abstract e acabamos nos deparando com resultados inesperados.
Um exemplo prático:
Supondo que voce criou um Model Produtos, as chances de você criar um método cadastrar, ou novo, ou inserir, são enormes, dai a queixa.
...
public function cadastrar( $dados ) {
$this->insert( $dados );
}
...
Ai na hora de inserir os dados você deseja saber o último id inserido e não sai nada.
E você faz algo do tipo:
...
public function cadastrarAction() {
$db = new Produtos();
$dados = array(
'nome' => $this->getRequest()->getPost('nome'),
'descricao' => $this->getRequest()->getPost('descricao'),
'valor' => $this->getRequest()->getPost('valor')
)
$id = $db->cadastrar( $dados );
}
...
Ai o que acontece? Voce insere certinho, mas não retorna o id.
A dica esta tem duas partes:
1) Talvez voce tenha esquecido de colocar o return no Model para o método cadastrar
...
return $this->insert( $dados );
...
2) Voce não colocou o ID na variável $dados. Vale ressaltar aqui, que o Zend manipula os tipos de dados bem estritamente, e certas operações não estarão disponíveis se você não for específico com o tipo de dado em uso, neste caso, o ID a ser retornado é do tipo NULL e logo, você tem que fazer isto:
...
$dados = array(
'id' => null // observe que é null e nao 'null' entre aspas, senao seria string
...