joined继承与单表继承相结合

x7yiwoj4  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(193)

我想在我的模型中有以下情况
我的空间里有不同的混凝土车辆类型,比如 bicyclemotorcycle ,一个 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个月前也有类似的帖子
条令:单表继承是从联合继承扩展而来的吗?
但是没有人回答
有什么问题?我怎样才能解决这个问题?有更清洁的解决方案吗?
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题