Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/06/2005, 09:20
HerSAn
 
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.