Doctrine MongoDB ODM
  1. Doctrine MongoDB ODM
  2. MODM-168

Can't Use Custom Repository Class for Embedded Doc When Using YAML Driver

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Minor 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']))

      { $class->setCustomRepositoryClass($element['repositoryClass']); }

      } elseif ($element['type'] === 'mappedSuperclass')

      { $class->isMappedSuperclass = true; }

      elseif ($element['type'] === 'embeddedDocument')

      { $class->isEmbeddedDocument = true; }

      <<TO THIS>>
      if (isset($documentAnnot->repositoryClass))

      { $class->setCustomRepositoryClass($element['repositoryClass']); }

        Activity

        There are no comments yet on this issue.

          People

          • Assignee:
            Jonathan H. Wage
            Reporter:
            Isaac Foster
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated: