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.