REMARQUE : si ce que je veux n'est pas possible, un "pas possible" réponse sera acceptée
Dans la Doctrine 2 de la documentation à propos de l'héritage de la cartographie, il est dit il y a 2 façons :
- Seul l'héritage de table (STI)
- La classe de l'héritage de table (CTI)
Pour les deux, il y a l'avertissement :
Si vous utilisez un STI/CTI entité plusieurs-à-un ou un-à-un de l'entité , vous ne devez jamais utiliser l'une des classes dans les niveaux supérieurs de l'héritage de la hiérarchie "targetEntity", seuls ceux qui n'ont pas de sous-classes. Sinon Doctrine NE peut pas créer de proxy cas de cette entité et sera TOUJOURS à la charge de l'entité avec impatience.
Alors, comment puis-je procéder pour utiliser l'héritage, avec un lien vers la base (résumé) de la classe ? (et conserver les performances de cours)
Exemple
Un utilisateur a plusieurs Pet
(classe abstraite prolongée par Dog
ou Cat
).
Ce que je veux faire :
class User {
/**
* @var array(Pet) (array of Dog or Cat)
*/
private $pets;
}
En raison de l'avertissement dans la Doctrine de la documentation, je devrais le faire :
class User {
/**
* @var array(Dog)
*/
private $dogs;
/**
* @var array(Cat)
*/
private $cats;
}
C'est gênant, parce que je perds les avantages de l'héritage !
Note : je n'ai pas ajouter de la Doctrine des annotations pour la cartographie de base de données, mais vous pouvez comprendre ce que je veux dire