Reemplazo de la herencia doctrina
Actualmente estamos desarrollando una aplicación muy flexible y modular con Zend Framework 2 y Doctrine 2. En esta aplicación hay varias entidades de Doctrine, por ejemplo, digamos que la entidadProduct
en el moduloProducts
. Este moduloProducts
es el módulo base / predeterminado para la gestión de productos.
Queremos poder crear una costumbre.Products
módulo para un cliente (XProducts
). Por eso creé una nueva entidad,XProduct
(con algunos campos extra) que se extiendeProduct
.
Así que si el módulo personalizado está habilitado quiero usarXProduct
Y ademásProduct
, pero nunca juntos (en el mismo proyecto).
Si anoto ambas entidades con @Entity funciona parcialmente; por ejemplofindAll
funciona perfecto, perofind
no funciona: la instrucción SELECT creada contiene las columnas correctas, pero la cláusula WHERE es incorrecta. Por ejemplo:
SELECT t1.id AS id2, t1.name AS name3 FROM products t1 WHERE t0.id = ?
supongot1
representaProductX
yt0
paraProduct
pero no puedo entender por qué las columnas son correctas (t1
) pero la cláusula where no es (t0
).
Soy consciente de que Doctrine proporciona herencia de tabla única para lograr la herencia, pero, por lo tanto, es necesario tener una Columna de Discriminador y definir el Mapa de Discriminador en la entidad base / predeterminada. Esto no nos conviene, porque debemos cambiar nuestro módulo base / predeterminado si agregamos un nuevo módulo personalizado para un cliente (y eso no es lo que queremos ...).
¿Alguien tiene una pista para solucionar este problema? ¡Gracias!