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

Mapear relación ternaria

Estas en el tema de Mapear relación ternaria en el foro de Symfony en Foros del Web. Buenas !. Me encuentro mapeando la base de datos para un proyecto. La base de datos existe desde hace tiempo, desde antes de mi llegada ...
  #1 (permalink)  
Antiguo 01/11/2013, 06:27
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 16 años, 3 meses
Puntos: 26
Mapear relación ternaria

Buenas !. Me encuentro mapeando la base de datos para un proyecto. La base de datos existe desde hace tiempo, desde antes de mi llegada al proyecto.

A grandes rasgos, es una base de datos de un colegio. Estoy mapeando tablas a medida que las voy necesitando, y por ahora no he tenido grandes problemas.
Pero llego el momento de mapear esta relación y no lo estoy logrando.

El entidad relación sería algo así:



Tenía pensado mapear la relación y cada una de las 3 tablas relacionarlas ManyToOne, mientras que la relación relacionarla como OneToMany contra las otras 3.

Pero no estoy seguro de que en verdad sea así, y tampoco lo estoy pudiendo hacer funcionar.

Alguna sugerencia?

Última edición por ramiro_md; 01/11/2013 a las 06:36
  #2 (permalink)  
Antiguo 05/11/2013, 09:25
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Mapear relación ternaria

Cuando tu modelo hace uso de una clase asociación, las relaciones se vuelven OneToMany/ManyToOne entre la clase asociación y las involucradas. Para tu caso especifico:

Responsable 1:N
TipoRelacion 1:N
Alumno 1:N
Relacion N:1 con las otras 3
Para duda o aclaraciones aqui por el foro o que leas la documentación de Doctrine: http://docs.doctrine-project.org/en/...-mapping.html#
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 06/11/2013, 20:26
Avatar de freedev  
Fecha de Ingreso: julio-2012
Mensajes: 10
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Mapear relación ternaria

Buenas justo creo que también tengo un problema similar y se adecua esta respuesta con lo que necesito:
Es un torneo de fútbol donde tengo: EquipoUsuario, PartidoUsuario, en cada partido se involucran dos equipos entonces "local" y "visitante" son don entity de EquipoUsuario (relación ManyToOne).
Sucede que al hacer la consulta y renderizar la plantilla que me muestra el partido y querer reproducer los nombre de los equipos con algo asi: $partido->getLocal()->getNombre() me dice "Class Acme\UsuarioBunlde\Entity\Perfil does not exist".
  #4 (permalink)  
Antiguo 07/11/2013, 17:58
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Mapear relación ternaria

Cita:
Iniciado por freedev Ver Mensaje
"Class Acme\UsuarioBunlde\Entity\Perfil does not exist".
Y si existe esa entidad en tu esquema ??
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 08/11/2013, 03:03
Avatar de freedev  
Fecha de Ingreso: julio-2012
Mensajes: 10
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Mapear relación ternaria

Si si, existe, tiene un relación así con Usuario:
Código:
/**
     * @ORM\ManyToOne(targetEntity="Perfil")
     * @ORM\JoinColumn(name="perfil_id", referencedColumnName="id")
     */
    private $perfil;
Sospecho que debe ser un JOIN faltante en el query, aclaro haciendo findAll me arroja el error.
  #6 (permalink)  
Antiguo 08/11/2013, 11:52
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Mapear relación ternaria

Cita:
Iniciado por freedev Ver Mensaje
Si si, existe, tiene un relación así con Usuario:
Código:
/**
     * @ORM\ManyToOne(targetEntity="Perfil")
     * @ORM\JoinColumn(name="perfil_id", referencedColumnName="id")
     */
    private $perfil;
Sospecho que debe ser un JOIN faltante en el query, aclaro haciendo findAll me arroja el error.
Es raro suponiendo que Perfil esta en UsuarioBundle prueba con algo como esto:
Código:
/**
     * @ORM\ManyToOne(targetEntity="Acme\UsuarioBundle\Entity\Perfil")
     * @ORM\JoinColumn(name="perfil_id", referencedColumnName="id")
     */
    private $perfil;
Por no dejar verifica en que Bundle esta tu entidad Perfil. por que pareciera que la busca en otro espacio de nombres.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: Ninguno
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 13:54.