如何在超类中拥有实体的列



我想在实体的超类/基类中拥有一些属性。我想要实现的最简单的例子是:

<?php
class BaseEntity{
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue
* @var int internal ID
*/
private int $id;
public function getId(): int{
return $this->id;
}
}
/**
* @ORMEntity
* @ORMTable(name="someentities")
*/
class SomeEntity extends BaseEntity{
// more stuff
}

有没有办法用ORM学说做到这一点?上面的例子不起作用,Doctrine在SomeEntity中找不到主键。您可以通过使BaseEntity本身成为实体来实现这一点,但我希望避免这种情况。

基本上,您需要做的是使用映射超类。对于上面的例子,它看起来像这样:

<?php
/** @ORMMappedSuperclass */
class BaseEntity{
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue
* @var int internal ID
*/
private int $id;
public function getId(): int{
return $this->id;
}
}
/**
* @ORMEntity
* @ORMTable(name="someentities")
*/
class SomeEntity extends BaseEntity{
// more stuff
}

如果你偶然发现了这个问题,你可能也在寻找Embeddables,这取决于你试图实现的目标。

相关内容

  • 没有找到相关文章

最新更新