Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-2370

Subclass annotations not being read, unable to use OneToMany relation with single table inheritance

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Invalid
    • Affects Version/s: 2.3.2
    • Fix Version/s: None
    • Component/s: ORM
    • Environment:
      PHP 5.4.11

      Description

      Subclasses that override parent class properties and define relations will not work as expected, because AnnotationDriver/Reader will only use the parent class annotation (discarding whatever subclass defined).

      The following code will produce error:

      [Mapping]  FAIL - The entity-class 'Test\Office' mapping is invalid:
      * The mappings Test\Office#employees and Employee#office are incosistent with each other.
      

      Test code:

      <?php
      namespace Test;
       
      use Doctrine\ORM\Mapping as ORM;
       
      /**
       * @ORM\Entity
       */
      class Office 
      {
          /**
           * @ORM\OneToMany(targetEntity="Person", mappedBy="office")
           * @var Person[]|ArrayCollection
           */
          protected $people;
       
          /**
           * @ORM\OneToMany(targetEntity="Employee", mappedBy="office")
           * @var Employee[]|ArrayCollection
           */
          protected $employees;
       
      }
       
      /**
       * @ORM\Entity
       * @ORM\InheritanceType("SINGLE_TABLE")
       * @ORM\DiscriminatorColumn(name="type", type="string")
       * @ORM\DiscriminatorMap({"employee" = "Employee"})
       */
      class Person
      {
          /**
           * @ORM\ManyToOne(targetEntity="Office", inversedBy="people")
           * @var Office
           */
          protected $office;
      }
       
      /**
       * @ORM\Entity
       */
      class Employee extends Person
      {
          /**
           * @ORM\ManyToOne(targetEntity="Office", inversedBy="employees")
           * @var Office
           */
          protected $office;
      }
      

        Activity

          People

          • Assignee:
            Benjamin Eberlei
            Reporter:
            Arthur Bodera
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: