DDC-898: Make DiscriminatorMap optional in Inheritance Mapping #5423

Closed
doctrinebot opened this Issue Nov 27, 2010 · 4 comments

1 participant

@doctrinebot

Jira issue originally created by user nd987:

It would be nice if a DiscriminatorMap was optional when defining Inheritance Mapping. For example, in dynamic environments where the actual classes that will extend a base class are not known, it would be much easier to have a default discriminator map created by Doctrine, which just mapped the class name to itself.

Having the DiscriminatorMap is great for some uses, but I think it should just use the classnames by default. That would mean less work for the developer and a more flexible/simpler system overall.

@doctrinebot

Comment created by @beberlei:

This is technically not possible (and wanted).

Explaination is simple:

Say i wouldnt define the Inheritance Mapping upfront and now do a query:

SELECT u FROM Root u

Since this query would hydrate ALL children of Root also. How would the code know which classes are parents? You cannot call find this out with Reflection or any other classes since you don't know for sure if the classes have been loaded using require_once yet.

@doctrinebot

Issue was closed with resolution "Won't Fix"

@doctrinebot

Comment created by omega:

I brought up exactly the same issue in DDC-764 a while back.

I don't understand the difficulty in allowing us to define a column in the superclass that Doctrine2 will use to to know what class name to use. Upon hydration, doctrine - in exactly the same way as with a discriminator map - will know which classes to instantiate. Class loading behaviour is basically identical.

This is proven by the fact that almost every single discriminator map I've seen to date looks like this:

"classname" = "ClassName"
"anotherclass" = "AnotherClass"

Given this, I still maintain that discriminator maps are totally redundant and would love to hear more people sound off on this issue. This is a great dynamic feature with lots of merit. I think it deserves more research.

@doctrinebot

Comment created by jsjohns:

DDC-1542 duplicates this issue, and was fixed in Doctrine 2.3.

@doctrinebot doctrinebot closed this Dec 6, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment