Skip to content

Modelos del carrito

Para poder permitir en el futuro distintos tipos de productos, se ha estructurado el módulo de forma que usa relaciones polimórficas para algunas relaciones. Como esto complica un poco seguir las relaciones entre modelos, hago este esquema para poder verlas:

classDiagram
    Cart-->CartRow
    CartRow-->CartProduct
  • Cart: es el carrito como tal, es el modelo principal
    • Tabla: carts
    • Modelo: \Bittacora\Bpanel4\Orders\Models\Cart\Cart
  • CartRow: es una línea del carrito. Hace referencia a un Cartable (\Bittacora\Bpanel4\Orders\Contracts\CartableProduct) y almacena también la cantidad. CartableProduct es una interfaz, que es con la que interactúa el carrito, no lo hace con el modelo directamente.
    • Tabla: cart_products
    • Modelo: \Bittacora\Bpanel4\Orders\Models\Cart\CartRow
  • CartProduct: esta clase es posible que desaparezca en un futuro. Inicialmente se usaba en Dermaviduals y hacía que un mismo producto pudiese tener distinto precio según el tamaño seleccionado y el rol del cliente (ver captura más abajo). Actualmente no tiene mucha utilidad.
    • Tabla: bpanel4_cart_products
    • Modelo: \Bittacora\Bpanel4\Products\Models\CartProduct
Tabla bpanel4_cart_products original
Ejemplo de la tabla `bpanel4_cart_products` con distintas prioridades