在Symfony2和Doctrine2中将实体类型引用为另一个实体上的字段的最佳方法

时间:2015-02-02 16:59:24

标签: symfony doctrine

在我的SF2 / Doctrine2应用程序中,我有一个实体“User”,然后是另一个抽象的父实体(为了简单起见我称之为植物),有两个子类型(树和灌木)。我想要的是让用户能够配置他们将要使用的工厂子类型,然后在他们创建新工厂时,它会创建一个子类型,树或灌木。

我的鉴别器专栏在植物上看起来像这样:

 /**
   * @ORM\InheritanceType("SINGLE_TABLE")
   * @ORM\DiscriminatorColumn(name="type", type="integer")
   * @ORM\DiscriminatorMap({
   *   0 = "Tree",
   *   1 = "Bush"
   * })
   */

我的问题是如何最好地在用户实体上创建一个字段来选择用户想要引用的实体类型。我能想出的最好的东西是:

  /**
   * @ORM\Column(name="plantType", type="integer")
   */
  protected $plantType;

然后需要在User类的某个地方的另一个函数中复制这些数据:

public function createNewPlant(){
  if ($this->plantType == 0) return new Tree();
  elseif ($this->plantType == 1) return new Bush();
}

这对我来说似乎不对,因为我在两个地方将整数值映射到植物类型。有更好的方法吗?

非常感谢!

0 个答案:

没有答案