Propel: ¿Cómo hacer un join complejo?

101 views
Skip to first unread message

Sergio Flores

unread,
Aug 11, 2007, 6:38:07 PM8/11/07
to symfo...@googlegroups.com
Hola a todos!

Tengo una relación de tipo " Tabla_A > Tabla_B > Tabla_C " y necesito
hacer una consulta que haga un join (A con el B y el B con el C) de los
tres y no genere nuevas consultas al pedir sus objetos compuestos.

O sea, necesito un método TablaA::doSelectJoinTablaBJoinTablaC, pero no
sé como hacerlo!!

Espero alguien tenga alguna ayudita !!

Gracias y hasta pronto!!

PD// doSelectJoinAll no me sirve porque lo hace con sus tablas
relacionadas, pero yo necesito una relacion de una relacion, como un
tercer nivel, ¿se entiende?

Claudio Ceballos Paz

unread,
Aug 11, 2007, 9:21:49 PM8/11/07
to symfo...@googlegroups.com
Tendrias que trabajar con Creole Directamente (la capa de abstraccion de base de datos), y no con Propel (ORM).

Aqui te podes fijar como:

http://www.librosweb.es/symfony/capitulo8/acceso_a_los_datos.html

Fijate bajo el subtitulo: "Uso de consultas con sentencias SQL"
Saludos.

Sergio Flores

unread,
Aug 11, 2007, 10:25:25 PM8/11/07
to symfo...@googlegroups.com
Pero yo quiero utilizar las clases del modelo, ya tengo defindos algunos
métodos que me son de utilidad. ¿Es posible?

Claudio Ceballos Paz escribió:

Boris Duin

unread,
Aug 13, 2007, 10:08:03 AM8/13/07
to symfo...@googlegroups.com
Claro que si se puede, de hecho puede haber un método en el modelo que te haga un join completo. Si una tabla tiene foreign key con otras dos tablas, seguramente Symfony te generó en la clase base de dicha tabla métodos que hacen esos join directamente. Revisate en la clase base de tu modelo ubicada en la carpeta lib/model/om y verifica si esos métodos fueron generado. De hecho puedes tomar esos métodos de ejemplo para crear joins más complejos.

El día 11/08/07, Sergio Flores <ser...@gmail.com> escribió:

Druidrago

unread,
Aug 13, 2007, 10:43:06 AM8/13/07
to symfony-es
Hola Sergio

Lo que tienes que hacer es ocupar el metodo addJoin de la clase
Criteria

$c = new Criteria()
$c->addJoin(CTablaAPeer::ID , TablaBPeer::TablaA_ID,
Criteria::INNER_JOIN );

Saludos

Druidrago

Reply all
Reply to author
Forward
0 new messages