在許多實體中擁有相同實體欄位的最佳方式是什麼? 例如,「相關實體」將出現在 8 個表中。
class User { #[ORM\Column(length: 255)] private ?string $relatedEntity = null; }
class User2 { #[ORM\Column(length: 255)] private ?string $relatedEntity = null; }
「User」中的RelatedEntity 就像其他人的父字段。有什麼方法可以將它們相互映射以使查詢更簡單嗎?
我嘗試過 OneToOne,但每次它都會新增用戶,但我不需要這樣做。
P粉2152927162023-09-12 17:26:55
您有幾個選擇,您可以使用特徵 a> 或使用抽象類別。就像 @LBA 在他的回答中所說,如果您的實體有許多共同點並且只有一些差異,您可能需要研究 繼承映射。
特徵範例:
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; }
抽象類別範例:
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 { }