Maison > Questions et réponses > le corps du texte
Quelle est la meilleure façon d'avoir les mêmes champs d'entité dans plusieurs entités ? Par exemple, « Entités associées » apparaîtra dans 8 tableaux.
class User { #[ORM\Column(length: 255)] private ?string $relatedEntity = null; }
class User2 { #[ORM\Column(length: 255)] private ?string $relatedEntity = null; }
RelatedEntity dans "User" est comme le champ parent pour les autres. Existe-t-il un moyen de les mapper les uns aux autres pour simplifier les requêtes ?
J'ai essayé OneToOne mais à chaque fois, il ajoute de nouveaux utilisateurs mais je n'ai pas besoin de le faire.
P粉2152927162023-09-12 17:26:55
Vous avez quelques options, vous pouvez utiliser traits a> ou utiliser cours abstraits. Comme @LBA l'a dit dans sa réponse, si vos entités ont beaucoup de points communs et seulement quelques différences, vous voudrez peut-être vous pencher sur la cartographie de l'héritage.
Exemple de fonctionnalité :
trait RelatedEntityTrait { #[ORM\Column(length: 255)] private ?string $relatedEntity = null; public function getRelatedEntity(): ?string { return $this->relatedEntity; } public function setRelatedEntity(?string $relatedEntity): void { $this->relatedEntity = $relatedEntity; } } class User { use RelatedEntityTrait; } class User2 { use RelatedEntityTrait; }
Exemple de classe abstraite :
abstract class BaseUser { #[ORM\Column(length: 255)] private ?string $relatedEntity = null; public function getRelatedEntity(): ?string { return $this->relatedEntity; } public function setRelatedEntity(?string $relatedEntity): void { $this->relatedEntity = $relatedEntity; } } class User extends BaseUser { } class User2 extends BaseUser { }