Foros del Web » Programando para Internet » PHP »

obtener proximo ID en base de datos con Propel

Estas en el tema de obtener proximo ID en base de datos con Propel en el foro de PHP en Foros del Web. Estoy usando Propel para un proyecto. Y la verdad es que me genera muchas dudas. Queriendo obtener el proximo id de una tabla, encontré y ...
  #1 (permalink)  
Antiguo 13/10/2011, 09:07
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Busqueda obtener proximo ID en base de datos con Propel

Estoy usando Propel para un proyecto. Y la verdad es que me genera muchas dudas.

Queriendo obtener el proximo id de una tabla, encontré y adapté esta función:

Código PHP:
Ver original
  1. public static function getNextId($tableName, &$con = null ){
  2.             if(empty($con))
  3.                 $con = Propel::getConnection(UsersPeer::DATABASE_NAME);
  4.            
  5.             $sql = "show table status like '$tableName'";  
  6.             $stmt = $con->prepare($sql);
  7.             $stmt->execute();            
  8.             $row = $stmt->fetch();
  9.            
  10.             return $row['Auto_increment'];
  11.     }

Mi duda es acerca de la conexión ($con). Por qué hay que generar una conexión para hacer querys sql en Propel? Y al margen de esto, da igual usar cualquier PEER al hacer la conexión? Porque como ven en la función que publiqué estoy conectando mediante el UsersPeer en caso de no tener una conexión previa establecida. Eso esta ok? O el Peer debería coincidir con la tabla que estoy por consultar?
  #2 (permalink)  
Antiguo 13/10/2011, 09:26
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: obtener proximo ID en base de datos con Propel

Desconozco como trabaja Propel, pero sí, es necesario hacer una conexión a la base de datos para enviar queries, si no ¿como puedes ver los resultados?.

Me imagino que getConnection lo que hace es establecer una conexión con PDO a una base de datos.
  #3 (permalink)  
Antiguo 13/10/2011, 09:30
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: obtener proximo ID en base de datos con Propel

Claro que se necesita una conexión. Pero Propel por lo general no necesita establecerla manualmente, o sea instanciar un objeto $con. Por ejemplo, así es una query simple:

Código PHP:
Ver original
  1. $companies = CompaniesQuery::create()->orderByCompName()->find()->toArray();

La cuestión es que si uno quiere escribir una query SQL propia ahí sí resulta necesario establecer una conexión. Y esto se hace por un PEER. Lo que no entiendo es por que hay que usar un PEER específico, por ejemplo UsersPeer. Es que Propel no tiene uno generico? Esto me causa dudas.
  #4 (permalink)  
Antiguo 13/10/2011, 10:05
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: obtener proximo ID en base de datos con Propel

Según la documentación name puede ser nulo, en cuyo caso regresaría el DNS como default, si es que tienes establecido uno.
  #5 (permalink)  
Antiguo 13/10/2011, 10:08
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: obtener proximo ID en base de datos con Propel

Genial. Muchas gracias GatorV!

Etiquetas: propel, sql, tabla
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.
Respuesta




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