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

Duda herencia con Doctrine2 junto a CodeIgniter2

Estas en el tema de Duda herencia con Doctrine2 junto a CodeIgniter2 en el foro de CodeIgniter en Foros del Web. Estoy empezando con el desarrollo de una aplicacion web en Codeigniter2 + doctrine2 y tengo una duda respecto a los siguiente: Tengo una clase A ...
  #1 (permalink)  
Antiguo 30/03/2012, 11:03
 
Fecha de Ingreso: enero-2011
Ubicación: Montevideo
Mensajes: 31
Antigüedad: 13 años, 10 meses
Puntos: 1
Duda herencia con Doctrine2 junto a CodeIgniter2

Estoy empezando con el desarrollo de una aplicacion web en Codeigniter2 + doctrine2 y tengo una duda respecto a los siguiente:

Tengo una clase A y varias clases que heredan de esta, supongamos B y C, y a su vez tengo una clase D que hereda de B, la duda se me presenta en la definición de la herencia, en la clase padre A yo he agregado

@Entity
@Table(name="a")
@InheritanceType("JOINED")
@DiscriminatorColumn(name="discrA", type="string")
@DiscrimitanorMap({"a"="A", "b"="B", "c"="C"})


y en la clase B a su vez es padre de D, por lo cual se me ocurre que tendría que ir

@Entity
@Table(name="B")
@InheritanceType("JOINED")
@DiscriminatorColumn(name="discrB", type="string")
@DiscrimitanorMap({"b"="B", "d"="D"})


Luego de generar las bases, me genera todo, pero en la tabla b no me agrega el campo discrB.

Por todo esto es que consulto como es que debería de ir?? estoy haciendo bien las cosas??
Si alguien tiene una idea que me pase un ejemplo.

Muchas gracias Diego
  #2 (permalink)  
Antiguo 30/03/2012, 11:11
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Duda herencia con Doctrine2 junto a CodeIgniter2

Has leído la documentación Class Table Inheritance ? , creo que es bastante clara, tu clase B debería tener simplemente

Código PHP:
Ver original
  1. /**
  2.  * @ORM\Entity
  3.  * @ORM\Table
  4.  */
  5. class B extends A
  6. {...}

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 30/03/2012, 11:25
 
Fecha de Ingreso: enero-2011
Ubicación: Montevideo
Mensajes: 31
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Duda herencia con Doctrine2 junto a CodeIgniter2

Si la he leído y también se como llamar a una clase, igual gracias por tu aporte.

Mi consulta es otra, como está detallado más arriba, es referente a Heredar de una clase que a su vez la clase de la cual heredo tambien hereda de otra... me explico?

A -> B -> C
B hereda de A y a su vez C hereda de B.

Saludos
  #4 (permalink)  
Antiguo 30/03/2012, 11:34
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Duda herencia con Doctrine2 junto a CodeIgniter2

Te lo esta diciendo la documentacion, el discriminator va en la clase mas alta, en tu caso A:

Código PHP:
Ver original
  1. /**
  2.  * @Entity()
  3.  * @Table()
  4.  * @InheritanceType("JOINED")
  5.  * @DiscriminatorColumn(name="discr", type="string")
  6.  * @DiscrimitanorMap({"a"="A", "b"="B", "c"="C"})
  7.  */
  8. class A
  9. {}
  10.  
  11. /**
  12.  * @Entity()
  13.  * @Table()
  14.  */
  15. class B extends A
  16. {}
  17.  
  18. /**
  19.  * @Entity()
  20.  * @Table()
  21.  */
  22. class C extends B
  23. {}
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 30/03/2012, 11:42
 
Fecha de Ingreso: enero-2011
Ubicación: Montevideo
Mensajes: 31
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Duda herencia con Doctrine2 junto a CodeIgniter2

Cita:
Iniciado por masterpuppet Ver Mensaje
Te lo esta diciendo la documentacion, el discriminator va en la clase mas alta, en tu caso A:

Código PHP:
Ver original
  1. /**
  2.  * @Entity()
  3.  * @Table()
  4.  * @InheritanceType("JOINED")
  5.  * @DiscriminatorColumn(name="discr", type="string")
  6.  * @DiscrimitanorMap({"a"="A", "b"="B", "c"="C"})
  7.  */
  8. class A
  9. {}
  10.  
  11. /**
  12.  * @Entity()
  13.  * @Table()
  14.  */
  15. class B extends A
  16. {}
  17.  
  18. /**
  19.  * @Entity()
  20.  * @Table()
  21.  */
  22. class C extends B
  23. {}
OK, no lo había interpretado de esa forma, sino que entendía que la clase de la cual se heredaba tenia que tener el código que he descrito arriba, por eso mi duda si en B debería de ir ese código también.

Voy a probar a ver que onda.

Muchas gracias.

Etiquetas: doctrine2, herencia, junto, tabla
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 09:51.