Cartographie de l'Association avec mappé de la superclasse

Dans mon vendeur bundle, j'ai 2 mappé superclasse : BaseSite et BaseSection (abstraites).

Dans mon bundle d'application, j'ai 2 entités qui s'étend le 2 mappé de la superclasse.
Tout fonctionne jusqu'à présent: j'ai accès aux champs définis dans les super-classes et je peux en ajouter de nouvelles dans mon bundle d'application si nécessaire.

Le problème est quand je suis en train de définir ma cartographie de l'association entre ces entités. (manyToOne entre BaseSection et BaseSite).
Si je le définir dans le BaseSection mappé superclasse, je suis en mesure d'exécuter la commande app/console doctrine:generate:entities AcmeDemoBundle, mais il ne fonctionne pas quand
J'essaie de créer les tables: (app/console doctrine:schema:update --dump-sql)

CREATE TABLE Section (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, siteId INT DEFAULT NULL, INDEX IDX_95E06DEFFADB670C (siteId), PRIMARY KEY(id)) ENGINE = InnoDB;
CREATE TABLE Site (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB;
ALTER TABLE Section ADD CONSTRAINT FK_95E06DEFFADB670C FOREIGN KEY (siteId) REFERENCES BaseSite(id) ON DELETE CASCADE

Comme vous pouvez le voir, il essaie de faire référence à la clé étrangère sur une table qui n'existe pas (BaseSite au lieu de Site). Je suppose que c'est parce que le mappé super-classe n'est pas au courant du nom de la table définie dans la demande de l'entité.

Je pourrais définir l'association de cartographie sur l'application des entités au lieu de cela, mais cela voudrait dire que si quelqu'un voulait utiliser mon bundle, il faudrait définir le mappage de lui-même, que je voudrais éviter.

Est-il une autre manière de faire ceci ou peut-être que je suis juste en manque de quelque chose?

Voici mon code:

Vendeur :

Fichier: vendeur\bundles\Acme\DemoBundle\Ressources\config\doctrine\BaseSite.orm.yml

Acme\DemoBundle\Entity\BaseSite:
  type: mappedSuperclass
  fields:
    id:
      type: integer
      id: true
      generator:
        strategy: AUTO
    name:
      type: string
      length: 255
      nullable: false
    //...

Fichier: vendeur\bundles\Acme\DemoBundle\Ressources\config\doctrine\BaseSection.orm.yml

Acme\DemoBundle\Entity\BaseSection:
  type: mappedSuperclass
  fields:
    id:
      type: integer
      id: true
      generator:
        strategy: AUTO
    name:
      type: string
      length: 255
      nullable: false
    //...
  manyToOne:
    site:
      targetEntity: Acme\DemoBundle\Entity\BaseSite
      joinColumn:
        name: siteId
        referencedColumnName: id
        onDelete: cascade

Application:

Fichier: src\Application\Acme\DemoBundle\Ressources\config\doctrine\Site.orm.yml

Application\Acme\DemoBundle\Entity\Site:
  type: entity
  table: Site

Fichier: src\Application\Acme\DemoBundle\Entity\Site.php

<?php

namespace Application\Acme\DemoBundle\Entity;

use Acme\DemoBundle\Entity\BaseSite;

class Site extends BaseSite
{
}

Fichier: src\Application\Acme\DemoBundle\Ressources\config\doctrine\Section.orm.yml

Application\Acme\DemoBundle\Entity\Section:
  type: entity
  table: Section

Fichier: src\Application\Acme\DemoBundle\Entity\Section.php

<?php

namespace Application\Acme\DemoBundle\Entity;

use Acme\DemoBundle\Entity\BaseSection;

class Section extends BaseSection
{
}
Avez-vous trouvé des solutions à ce en attendant?

OriginalL'auteur Emilie | 2012-03-26