如何在多個實體中使用相同的實體欄位?
P粉674999420
P粉674999420 2023-09-11 22:06:11
0
1
508

在許多實體中擁有相同實體欄位的最佳方式是什麼? 例如,「相關實體」將出現在 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粉674999420
P粉674999420

全部回覆(1)
P粉215292716

您有幾個選擇,您可以使用特徵 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
{
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板