Foros del Web » Programando para Internet » PHP » Zend »

Data Mappers y Modelos en Zend Framework

Estas en el tema de Data Mappers y Modelos en Zend Framework en el foro de Zend en Foros del Web. Buenasss, Mi duda es más conceptual que código. Les planteo mi situación: En mi base de datos tengo tablas como: 'alumnos, profesores, administrativos, etc'. Estas ...
  #1 (permalink)  
Antiguo 26/02/2010, 09:08
 
Fecha de Ingreso: diciembre-2006
Mensajes: 15
Antigüedad: 17 años, 2 meses
Puntos: 0
Data Mappers y Modelos en Zend Framework

Buenasss,

Mi duda es más conceptual que código. Les planteo mi situación:

En mi base de datos tengo tablas como: 'alumnos, profesores, administrativos, etc'.
Estas tablas lo que guardan son los datos personales de cada uno, asi como también un campo 'usuario' , que contiene el 'id_usuario' que se relaciona con la tabla 'usuarios', en donde residen todos los 'usernames' y 'passwords' de TODOS los tipos de usuario diferentes (alumno, profesor, admin, administrativo, etc)

He qui el dilema:
Todo 'usuario' de la tabla 'usuarios' tiene relacionada una PERSONA, ya sea profesor, alumno ,etc. Entonces cuando yo quiera mostrar en pantalla los datos de un usuario, no solo quiero mostrar su 'username' y 'password', sino también todos los datos de la persona asociada a ese 'usuario': 'nombre, apelllido, dni, etc'.

Aquí surge el problema, yo no puedo crear un Model_Usuarios, ya que necesito consultar al menos 2 tablas diferentes y esto sería conceptualmente erróneo por más que se pueda hacer.

Espero haber dejado claro el inconveniente.

Mi solución:

Había pensado en crear una clase propia 'Usuarios', que guardaría en mi librería, la cual se "conectaría" con los distintos Mappers que le van a traer los datos de laqs distintas tablas ('usuarios' y 'alumnos' ,por ej). Y luego clases como 'Alumnos' y 'Profesores' que hereden de esta clase 'Usuarios', ya que conecptualmente tanto profesores como alumnos son usuarios en sí.

¿Qué les parece todo esto? ¿Cómo lo hacen ustedes?

Saludos y MUCHAS Gracias de antemano
  #2 (permalink)  
Antiguo 26/02/2010, 09:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Data Mappers y Modelos en Zend Framework

No hay ningún problema a nivel conceptual de hacer un Join, el DataMapper precisamente es eso un Mapeo de Datos, internamente tu en el DataMapper instancias dos objetos uno de Usuarios, y otro de Profesores y haces el Join y levantas tu objeto.

Recuerda que el DataMapper precisamente es eso un puente, entre tu Controller/View y tu Modelo interno de datos (ya sea una base de datos SQL, archivo de texto, xml, etc.).

Saludos.
  #3 (permalink)  
Antiguo 26/02/2010, 09:58
 
Fecha de Ingreso: diciembre-2006
Mensajes: 15
Antigüedad: 17 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Data Mappers y Modelos en Zend Framework

Una última consulta.
Yo con im DataMapper hago el Join y traigo la data que a mi me sirva de las distintas tablas. El objeto que yo me armo para mi uso (ej: Usuario), sería un Modelo que herede de Zend_Db_Table_abstract ? A mi entender no debería ser asi ya que justamente ese tipo de Modelos son de UNA tabla en particular seteada en el atributo $_name. Entonces en vez de mapear un Model, mapearía una clase propia Usuarios.

Help me.
  #4 (permalink)  
Antiguo 26/02/2010, 11:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Data Mappers y Modelos en Zend Framework

No, nuevamente la idea es que el acceso a datos y los datos como tal esten separados de tu logica, si los quieres heredar de Zend_Db_Table_Row_Abstract en ese caso implementale métodos como getProfesores() para que te devuelva los profesores o cosas similares.

Saludos.
  #5 (permalink)  
Antiguo 26/02/2010, 12:45
 
Fecha de Ingreso: diciembre-2006
Mensajes: 15
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Data Mappers y Modelos en Zend Framework

A ver si comprendi ...

TABLA DE LA BASE DE DATOS(usuarios):
id_usuario
username
password

TABLA DE LA BASE DE DATOS(profesores):
id_profesor
nombre
apellido
id_usuario (vinculado con la tabla anterior)


Mapper:
Código PHP:
class Model_UsuariosMapper
{
    public function 
getUserById($id_usuario)
    {
        
//me conecto con la tabla 'usuarios' y traigo el row correspondiente y voy seteando los valores en un objeto de la clase Usuario
    
}

    public function 
getProfesorByUserId($id_usuario)
    {
        
//me conecto con la tabla 'profesores' y traigo el row correspondiente y voy seteando los valores en un objeto de la clase Usuario

        
return $objetoClaseUsuario;
    }

Modelo Usuario:
Código PHP:
class Model_DbTable_Usuario
{
    protected 
$_nombre;
    protected 
$_apellido;
    protected 
$_username;

    public function 
setNombre($username);
    public function 
setNombre($username);

    public function 
setNombre($nombre);
    public function 
setNombre($nombre);

    public function 
setNombre($apellido);
    public function 
setNombre($apellido);

Masomenos, lo que yo intento hacer, es guardar en un objeto de la clase Usuarios datos que recojo de 2 tablas distintas, y asi armar todo en un solo objeto USUARIO.

Está muy mal como lo pensé?
Qué podría mejorar?

Saludos y gracias por la paciencia.

Etiquetas: data, framework, modelos, php
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 05:48.