Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Minor
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: Mapping Drivers
-
Labels:None
Description
When using the Yaml driver the ClassMetadata generation process won't create and use the indicated custom repository class for an embedded document. From what I can see digging into the actual code, it will work when using the Annotations or XML drivers, but in the Yaml driver the call to setCustomRepositoryClass is inside of a conditional that only gets entered if the document type is 'document'.
I'm not completely sure, but from what I can see elsewhere in the code, it looks like mapped superclasses should also be able to have a custom repository class, but can't when using the Yaml driver.
So I reckon what would work would be to change the code as indicated below:
<<EXISTING CODE>>
//Doctrine/ODM/MongoDb/Mapping/Driver/YamlDriver.php, line 66
if ($element['type'] == 'document') {
if (isset($element['repositoryClass']))
} elseif ($element['type'] === 'mappedSuperclass')
{ $class->isMappedSuperclass = true; }elseif ($element['type'] === 'embeddedDocument')
{ $class->isEmbeddedDocument = true; }<<TO THIS>>
if (isset($documentAnnot->repositoryClass))