我想在實體的超類/基類中擁有一些屬性。我想要實現的最簡單的例子是這樣的:<?phpclass BaseEntity{ /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue * @var int internal ID */ private int $id; public function getId(): int{ return $this->id; }}/** * @ORM\Entity * @ORM\Table(name="someentities") */class SomeEntity extends BaseEntity{ // more stuff}有沒有辦法用 ORM 來做到這一點?上面的例子不起作用,Doctrine在SomeEntity中找不到主鍵。您可以通過使 BaseEntity 本身成為實體來做到這一點,但我想避免這種情況。
1 回答

catspeake
TA貢獻1111條經驗 獲得超0個贊
基本上你需要做的是使用Mapped Superclasses。對于上面的例子,它看起來像這樣:
<?php
/** @ORM\MappedSuperclass */
class BaseEntity{
? ? /**
? ? ?* @ORM\Id
? ? ?* @ORM\Column(type="integer")
? ? ?* @ORM\GeneratedValue
? ? ?* @var int internal ID
? ? ?*/
? ? private int $id;
? ? public function getId(): int{
? ? ? ? return $this->id;
? ? }
}
/**
?* @ORM\Entity
?* @ORM\Table(name="someentities")
?*/
class SomeEntity extends BaseEntity{
? ? // more stuff
}
如果您偶然發現這個問題,您可能也在尋找Embeddables,具體取決于您想要完成的任務。
- 1 回答
- 0 關注
- 148 瀏覽
添加回答
舉報
0/150
提交
取消