我想在我的模型中有以下情况
我的空间里有不同的混凝土车辆类型,比如 bicycle
一 motorcycle
,一个 car
和一个 truck
由于无法从Map的超类中查询数据,因此我不使用它。为了能够查询所有车辆,我决定 vehicle
作为最顶级的实体并创建了具有 JOINED
继承类型。此外,我必须能够查询更详细的类型以后。所以我把他们分组 TwoWheeler
(摩托车和自行车)和 FourWheeler
(汽车和卡车)
* @ORM\Entity()
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type",type="string")
* @ORM\DiscriminatorMap({"two_wheeler" = "TwoWheeler", "four_wheeler" = "FourWheeler"})
* @ORM\Table(name="vehicle")
abstract class Vehicle
{
protected $id;
...
}
两轮车应该放在一张table上,四轮车应该放在另一张table上。为此,我创建了两个具有单表行为的模型。
* @ORM\Entity()
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type",type="string")
* @ORM\DiscriminatorMap({"bicycle" = "Bicycle", "motorcycle" = "Motorcycle"})
* @ORM\Table(name="two_wheeler")
abstract class TwoWheeler extends Vehicle
{
}
四轮车也是一样
* @ORM\Entity()
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type",type="string")
* @ORM\DiscriminatorMap({"car" = "Car", "truck" = "Truck"})
* @ORM\Table(name="four_wheeler")
abstract class FourWheeler extends Vehicle
{
}
最后是混凝土实体
汽车
* @ORM\Entity()
abstract class Car extends FourWheeler
{
...
}
自行车
* @ORM\Entity()
abstract class Bicycle extends TwoWheeler
{
...
}
等等。。。
问题:
教条不会创造出这种继承的杰作。。。我认为它有一个问题 SINGLE_TABLE
扩展类型为的模型 JOINED
如果我让 doctrine migrations
或者 doctrine schema
为了产生 vehicle
将创建表,但不创建 two_wheeler
以及 four_wheeler
一个。
我希望有一个至少汇总了所有车辆id(和公共属性)和 four_wheeler
和一个 two_wheeler
具有特定属性的表。
10个月前也有类似的帖子
条令:单表继承是从联合继承扩展而来的吗?
但是没有人回答
有什么问题?我怎样才能解决这个问题?有更清洁的解决方案吗?
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!