[DDC-898] Make DiscriminatorMap optional in Inheritance Mapping Created: 27/Nov/10  Updated: 03/Jan/13  Resolved: 29/Nov/10

Status: Resolved
Project: Doctrine 2 - ORM
Component/s: ORM
Affects Version/s: None
Fix Version/s: None
Security Level: All

Type: Improvement Priority: Major
Reporter: Nick Daugherty Assignee: Roman S. Borschel
Resolution: Won't Fix Votes: 0
Labels: None


 Description   

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.



 Comments   
Comment by Benjamin Eberlei [ 29/Nov/10 ]

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.

Comment by Alexander Trauzzi [ 10/Feb/11 ]

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:

"class_name" = "Class_Name"
"another_class" = "Another_Class"

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.

Comment by Joshua Johnson [ 03/Jan/13 ]

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

Generated at Wed Sep 03 02:48:04 UTC 2014 using JIRA 6.2.3#6260-sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.