Relación con objetos polimórficos

Hola gente!

Estoy teniendo bastantes dudas de como implementar mi diseño con Yii.

El problema reside en una parte pequeña del sistema, conformada por 3 clases de mi dominio del problema, se trata de un control de stock para una juguetería.

El UML que representa mi diseño es este:

^[Combo|descuento|precioVenta():integer], [Producto]^[Juguete|precioCosto;porcentajeGanancia|precioVenta():integer], [Combo]<>-[Producto]"]Enlace al UML

El diseño es básicamente un Composite donde yo tengo productos, de Producto heredan Combo y Juguete, y Combo tiene una colección de Productos, o sea que puede estar conformado por juguetes u otros combos.

El método precioVenta es abstracto en Producto y tanto Juguete como Combo deben implementarlo. En el caso de Juguete se hará a partir del precioCosto y el porcentajeGanancia, mientras que en el Combo se recorrerá la lista de juguetes y combos (o sea, de productos), y a la suma total se le aplicará un descuento (con los descuentos de los otros combos ya calculados).

El problema es cuando tengo que mapear esto en una base de datos para que Yii lo pueda interpretar como yo quiero… me estuve rebanando los cesos pero no encuentro solución. El principal problema lo vi cuando intenté pensar el método relations del modelo Combo, aquí tenía que tener una relación MANY_MANY (un combo tiene muchos productos y un producto puede pertenecer a muchos combos) en la que los objetos del array generado por Yii debían ser polimórficos, o sea, un array de Juguetes y Combos mezclados, y al ver eso me perdí totalmente.

¿Alguien me podría lanzar un cable, por favor?

Gracias de antemano si leyeron! :)

Un Saludo!

Hola

Supongo que tienes una base de datos relacional no? el modelo que adjunto es como el tuyo?

la relación desde Combo es MANY_MANY, pero siempre va a ser hacia productos, no a Juguetes

En este enlace también tienes un poco de ayuda sobre la declaración de relaciones http://www.yiiframework.com/doc/guide/1.1/es/database.arr

Gracias por contestar, pero sigo con un problema, con el diagrama que me mandaste puedo relacionarlo, o sea Combo tiene Productos, pero en realidad Combo no puede tener productos, sino alguna de sus especializaciones, ya que en mi modelo no tiene sentido instanciar Producto, es mas, es una clase abstracta.

Entonces en la variable relacionada que podría llamar "productos" definida en Combo::relations debería ser un arreglo de Juguetes y/o Combos, pero no de Productos. Y poder manejarme con su funcionalidad común.

¿Es posible crear esa relación en Yii?

Un Saludo!