official documentation似乎没有提到对此的限制。
但是,只要你想在列的关系,鉴别地图会再靠DB-发出的ID,这是不是在我看来不错...
但你仍然可以让学说处理鉴别为你:只声明你永远不会直接使用的鉴别器列,声明其地图,然后依靠实体逻辑来保持类别和文档类型之间的一致性:
/**
* @ORM\Entity(repositoryClass="...
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({
* "youtube"="Youtube",
* "dailymotion"="Dailymotion",
* ...
* })
*/
abstract class Document {
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="documents")
*/
protected $category;
...
//this is to be called by children that all share a category field
public function setCategory(Category $c) {
$class = get_class($this);
if (strtolower($c->getName()) !== strtolower(substr($class, strrpos($class, '\\') + 1))) {
throw new \LogicException("Cannot bind " . $class . " to category " . $c->getName());
}
$this->category = $c;
return $this;
}