Foros del Web » Programando para Internet » PHP » Zend »

Zend Framework + mysql_insert_id()

Estas en el tema de Zend Framework + mysql_insert_id() en el foro de Zend en Foros del Web. Hola como va? Necesito utilizar Código PHP: mysql_insert_id ())  a traves de zend framework pero nose si se puede utilizar, no encuentro el como. Configure ...
  #1 (permalink)  
Antiguo 20/01/2009, 04:23
 
Fecha de Ingreso: mayo-2005
Mensajes: 257
Antigüedad: 19 años, 7 meses
Puntos: 1
Zend Framework + mysql_insert_id()

Hola como va?

Necesito utilizar
Código PHP:
mysql_insert_id()) 
a traves de zend framework pero nose si se puede utilizar, no encuentro el como.

Configure mi db adpater como PDO_MYSQL y por ejemplo este no soporta el lastInsertId();. O eso creí entender.

Lo que necesito obtener el id (primary key - autoincrement) de un registro al cual le hice un insert recientemente.

Alguna ayudita?? Estoy medio perdido.

Saludos.
  #2 (permalink)  
Antiguo 20/01/2009, 07:22
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 3 meses
Puntos: 55
Respuesta: Zend Framework + mysql_insert_id()

aqui tu solucion lastInsertId()
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 20/01/2009, 14:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend Framework + mysql_insert_id()

Si soporta lastInsertId(), solamente que no lo soporta sobre secuencias como PostgreSQL, por ejemplo puedes tener 2 secuencias en un solo registro y puedes pedirle a lastInsertId por una secuencia en especifico.

Eso es lo que no soporta MySQL por eso si envias o no el nombre de una secuencia, es ignorado y solo te devuelve el último valor.

Saludos
  #4 (permalink)  
Antiguo 20/01/2009, 16:29
 
Fecha de Ingreso: mayo-2005
Mensajes: 257
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Zend Framework + mysql_insert_id()

Gracias por la respuesta, pero solo pude hacerlo funcionar de una manera. Primero intente lo siguiente:

Esto es parte de mi modelo:

Código PHP:

public function agregarLibro(array $datos) {
        
        
$libro = new self ();
        
 try {

        
$libro->insert ($datos);

        echo 
$libro->lastInsertId();
        
        
      }catch (
Zend_Exception $e) {
            
         die(
$e->getMessage());
     }    

Esto agrega los datos en la base de datos, pero me sale el siguiente error:

Código PHP:
Fatal errorCall to undefined method Libreria::lastInsertId() 
No reconoce en lasinsertId. Es mas en el IDE, no me muestra la posibilidad de elegir ese metodo.

Pero si reemplazo:

Código PHP:
echo $libro->lastInsertId(); 
por

Código PHP:
  echo $libro->_db->lastInsertId(); 
Me devuelve el ID.. Quisiera saber si esto esta bien aplicado? y el porque debo ponerlo de la ultima manera para obtenerlo?

Muchisims gracias por su tiempo.

Abrazo.
  #5 (permalink)  
Antiguo 20/01/2009, 16:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend Framework + mysql_insert_id()

Pues habría que ver que archivo heredas Libreria, ya que si tu no defines ese método pues no existe, lastInsertId es parte de Zend_Db.

Saludos
  #6 (permalink)  
Antiguo 20/01/2009, 16:41
 
Fecha de Ingreso: mayo-2005
Mensajes: 257
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Zend Framework + mysql_insert_id()

Pues hice lo siguiente:

Código PHP:
class Libreria extends Zend_Db_Table_Abstract 
  #7 (permalink)  
Antiguo 20/01/2009, 16:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend Framework + mysql_insert_id()

Si lees la documentación de Zend FW, Zend_Db_Table_Abstract no tiene un método lastInsertId(), como te comente anteriormente este es un método definido en Zend_Db_Adapter_Abstract, por lo que si lo necesitas, debes de heredar a Zend_Db_Adapter_Abstract, pero tendrías que modificar muchas cosas ya que Zend_Db_Adapter_Abstract no tiene los mismos métodos que Zend_Db_Table_Abstract.

Aunque si lees la documentación Zend_Db_Table_Abstract::insert() te devuelve por defecto el nuevo PrimaryKey definido.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 06:13.