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

spr*_*ain 12 php database symfony doctrine-orm

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

有三个实体:Fruit,VegetableSnack.小吃有田地id,timefood.食物是一个参考或者一个水果一种蔬菜.所以它基本上是一对多/一对多的关系,因为一个小吃总是只能容纳一种食物.但是有多个目标实体.

我如何在Doctrine2中映射这个?

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

任何帮助表示赞赏.我确定我在这里错过了一些简单的东西.

ste*_*kay 8

您可以创建一个(抽象)映射的超类Food,它可以为Fruit和保存一些基本信息Vegetable.

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

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