2016-05-18 1 views
2

Avec doctrine sur symfony, recherche d'une entité liée à plusieurs entités sur une seule colonne restante. Par exemple:Une entité à plusieurs entités symfony

moteur Entité étendre deux entités

  • Entité plan
  • Entité voiture

one entity to many entities

Je veux utiliser une seule colonne dans le moteur, car j'ai un très grand nombre de tables liées.

Je ne peux pas trouver quelle est la meilleure pratique dans ce genre de régime. C'est possible? Comment ?

merci à l'avance

+2

Vous pouvez le faire avec ["Class Table Inheritance"] (http: //docs.doctrine-project .org/projects/doctrine-orm/fr/dernier/reference/inheritance-mapping.html # class-table-inheritance). Bien que vous auriez besoin d'introduire un type de parent commun. Peut-être 'abstract class Vehicle {}'. – Yoshi

Répondre

1

Vous pouvez le faire avec 'Class Table Inheritance'. Votre code ressemblera à ceci:

namespace MyProject\Model; 

/** 
* @Entity 
* @InheritanceType("JOINED") 
* @DiscriminatorColumn(name="discr", type="string") 
* @DiscriminatorMap({"car" = "Car", "plane" = "Plane"}) 
*/ 
class Vehicle 
{ 
    // ... 
} 

/** @Entity */ 
class Plane extends Vehicle 
{ 
    // ... 
} 


/** @Entity */ 
class Car extends Vehicle 
{ 
    // ... 
} 

Cela résout votre problème d'avoir une seule clé étrangère sur votre table de moteur. Cela vous aide également à avoir un code plus clair lorsque vous avez d'autres propriétés 'partagées' (par exemple une date de fabrication)