具有多个目标实体的多对一

时间:2013-04-15 13:29:49

标签: php database symfony doctrine-orm

这看起来很简单,但我无法做到:

有三个实体:FruitVegetableSnack。 Snack包含字段idtimefood。食物是指 一种水果一种蔬菜。所以它基本上是一对多/一对多的关系,因为一个小吃总是只能容纳一种食物。但是有不止一个目标实体。

我如何在Doctrine2中映射它?

在了解Doctrine2之前我会使用的一个简单的解决方案是使用两个字段:food_typefood_id。但是,如何从食物类型到正确的实体建立连接?我想到了一个JoinColumns数组,但找不到连接正确实体的方法。我还看了一下映射的超类,因为有一个DiscriminatorColumn,但它似乎也是错误的方法。如果我做对了,超类本身就不能成为一个实体 - 所以我不能创建一个食物实体。

感谢任何帮助。我确定我在这里错过了一些简单的东西。

1 个答案:

答案 0 :(得分:7)

您可以创建一个名为Food的(抽象)映射超类,它可以包含FruitVegetable的一些基本信息。

您的问题的关键字是inheritance mapping,这是它的文档:http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html

然后,您可以在实体关系中引用此映射的超类。