我想在实体的超类/基类中拥有一些属性。我想要实现的最简单的例子是这样的:<?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 关注
- 125 浏览
添加回答
举报
0/150
提交
取消