Coloco la solución a la que llegue para aquellas personas que empiezan
como yo y todo esto no le es familiar...La solución a la que llegue la
hice usando Creole y no propel...Tengo la versión 1.0.19 de symfony...
static public function getDatosTrabajador($carnet)
{
$conexion = Propel::getConnection(); (1)
$consulta = 'SELECT %s FROM %s INNER JOIN %s INNER JOIN %s WHERE
trabajador.id = ?'; (2)
$campos =
self::TABLE_NAME.".*,".CentroPeer::DESCRIPCION.",".LaboratorioPeer::DESCRIPCION;
$inner1 = CentroPeer::TABLE_NAME." ON ".self::CENTRO_ID ." =
".CentroPeer::ID;
$inner2 = LaboratorioPeer::TABLE_NAME." ON ".self::CENTRO_ID ." =
".LaboratorioPeer::CENTRO_ID;
$inner2 .= ' AND '.self::LABORATORIO_ID."=".LaboratorioPeer::ID;
$consulta = sprintf($consulta, $campos, TrabajadorPeer::TABLE_NAME,
$inner1,$inner2);
$sentencia = $conexion->prepareStatement($consulta);(3)
$sentencia->setInt(1,$carnet);(4)
$rs = $sentencia->executeQuery();
$rs->next();
return $rs;
}
(1) Debemos obtener la conexión a la base de datos
(2) Preparamos la consulta, se ve que al final hay un signo ?, sirve
para reemplazarlo luego por el valor referido, en este caso ($carnet),
este valor ha sido pasado desde el formulario.
--- Las siguientes varibles que allí aparecen ($campos, $inner1,
$inner2), las coloque para preparar las condiciones de los
Inner Join ---
(3) Se prepara la consulta usando la función prepareStatement
(4) Se reemplazan los valores de los ? que aparecen en la consulta,
esta función (setInt) recibe dos parámetros, el índice y el valor, en
este caso sólo hay que reemplazar un valor "
trabajador.id = ?", por lo
que el índice es 1.
--- Se ejecuta el query y obtenemos los resultados, como en este caso
voy a obtener un sólo registro, yo avanzo el puntero del recorset ya
que este empieza apuntando a 0, por lo que es necesario apuntarlo al
registro conseguido, luego retorno el objeto a la acción que lo
invoca...
Nota: Quizás sea básico para algunos, pero a mí me costo unas cuantas
horas resolver un inner join con las librerías que trae
symfony...espero que para los que no son gurus como yo les pueda
servir de algo...
On 15 abr, 18:14, "
jcroj...@gmail.com" <
jcroj...@gmail.com> wrote:
> Hola quiero hacer la siguiente consulta usando el objeto criteria:
>
> SELECT t1.campo1, t1.campo2, t2.campo1, t3.campo1 FROM t1INNERJOIN
> t2 ON t1.centro_id = t2.idINNERJOINt3 ON t1.centro_id = t3.centro_id AND t1.dpto_id =
t3.id