Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

problema de dataobjects con los joins

Estas en el tema de problema de dataobjects con los joins en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos Estoy probando los dataobjects, estoy usando el DB_DataObject que viene con PEAR. Se me ha presentado una inquietud. Si tengo tres clases (que ...
  #1 (permalink)  
Antiguo 28/06/2005, 14:43
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 19 años, 3 meses
Puntos: 0
problema de dataobjects con los joins

Hola amigos

Estoy probando los dataobjects, estoy usando el DB_DataObject que viene con PEAR. Se me ha presentado una inquietud.

Si tengo tres clases (que vienen de las tablas con el mismo nombre): alumno, matricula_curso, lista_cursos.
Donde un alumno puede matricularse a varios cursos. Lo que tengo que programar es una grilla(tabla) con columnas que vienen de las tres clases. Esto lo puedo conseguir fácilmente en SQL usando JOINS o WHEREs.
Lo que no tengo es una clase (dataobject), que encaje con esa definición de campos.
Que debería hacer ?

Cualquier sugerencia es bienvenida

Mr. Anderson
  #2 (permalink)  
Antiguo 29/06/2005, 09:20
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 2
Cita:
Iniciado por MrAndersonWEB
Hola amigos

Estoy probando los dataobjects, estoy usando el DB_DataObject que viene con PEAR. Se me ha presentado una inquietud.

Si tengo tres clases (que vienen de las tablas con el mismo nombre): alumno, matricula_curso, lista_cursos.
Donde un alumno puede matricularse a varios cursos. Lo que tengo que programar es una grilla(tabla) con columnas que vienen de las tres clases. Esto lo puedo conseguir fácilmente en SQL usando JOINS o WHEREs.
Lo que no tengo es una clase (dataobject), que encaje con esa definición de campos.
Que debería hacer ?

Cualquier sugerencia es bienvenida

Mr. Anderson
No especificas la relacion entre las tablas asi que supongo que es alumno-->matricula_curso-->lista_cursos. puedes usar los joins de la clase mediante los metodos getLink, getLinks y joinAdd del DB_DataObject, para referencia entra a http://pear.php.net/manual/en/packag...-relations.php.
Ahora usar el metodo addJoin en consultas que comprenden mas de dos tablas tiende a complicar la legibilidad del codigo y en lo personal no uso ese metodo, mejor lo resuelvo de la siguiente forma.

Código PHP:
$sqlStr "SELECT alumno.id as aid,lista_cursos.id as cid FROM alumno INNER JOIN matricula_curso
          ON alumno.id = matricula.alumno_id INNER JOIN lista_cursos
          ON matricula.curso_id = lista_cursos.id WHERE alumno.id = %d"
;
$conSQL sprintf($sqlStr,(int)$_POST['id']);
$alumno =  DB_DataObject::Factory('alumno');
$alumno->query($conSQL);

while(
$alumno->fetch()){
    echo 
$alumno->aid;
    echo 
$alumno->cid;
    
//....etc

Como vez es claro y rapido, si aun con esto te agrada mas la idea de hacer la consulta con los metodos que te mencione visita la liga. Y ve que te sirve mejor.

Saludos.
  #3 (permalink)  
Antiguo 06/07/2005, 11:12
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 19 años, 3 meses
Puntos: 0
Cool

Estuve probando getLinks() y no me funcionaba. Creo que es porque no había el archivo links.ini

Mi archivo config.ini contiene

[DB_DataObject]

database_ledger = pgsql://postgres:@localhost/hamtech
database_sugar = mysql://root:conectiva@localhost/sugarcrm1
database_soporte = pgsql://postgres:@localhost/soporte_conectiva

schema_location = /srv/www/default/html/tickets/dataobjects
class_location = /srv/www/default/html/tickets/dataobjects
require_prefix = dataobject/
class_prefix = DataObjects_
debug_ignore_updates = 0
dont_die = 0
dont_use_pear_sequences = 0
build_views = 0

Lo que yo uso para generar los DO es:


#php /usr/share/pear/DB/DataObject/createTables.php /srv/www/default/html/tickets/dataobjects/config.ini

Esper

Gracias

Última edición por MrAndersonWEB; 06/07/2005 a las 14:31
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 03:44.