我希望模型中出现以下情况
我的空间中有不同的具体车辆类型,例如bicycle
,motorcycle
,car
和truck
由于无法从映射的超类查询数据,因此在我的情况下不使用它。
为了能够查询所有车辆,我决定将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;
...
}
TwoWheeler应该放在一个表中,而FourWheeler应该放在另一个表中。为此,我创建了两个具有SINGLE_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
{
...
}
以此类推...
问题:
Doctrine不会创建继承的杰作……我认为SINGLE_TABLE
扩展了JOINED
类型的模型存在问题
如果我让doctrine migrations
或doctrine schema
生成,将创建vehicle
表,而不创建two_wheeler
和four_wheeler
。
我希望车辆表至少汇总所有车辆ID(和通用属性)以及具有特定属性的four_wheeler
和two_wheeler
表。
10个月前有类似的帖子
Doctrine: SINGLE_TABLE inheritance extends from JOINED inheritance is that possible?
但是没有人回答
出什么问题了?我该如何解决?有更清洁的解决方案吗?
谢谢