0

我正在尝试为 Symfony 中的分类广告网站创建一个列表系统。我希望有多个具有不同字段(和一些常见字段)的列表类型。

我打算创建一个主列表类,它包含所有公共字段(名称、描述、价格),然后是具有特定于不同类型的字段的子类。

通过我的研究,听起来 Doctrine 中的类表继承是最好的解决方案。我在这方面是正确的吗?我可能有多达 10 个“子类型”,听说它可能对性能不太好。

    /**
    * Listing
    *
    * @ORM\Table(name="listing")
    * @ORM\InheritanceType("JOINED")
    * @ORM\DiscriminatorColumn(name="discr", type="string")
    * @ORM\DiscriminatorMap({"listing" = "Listing","recreation-vehicle" = "RecreationVehicle","vehicle" = "Vehicle","event" = "Event","classified" = "Classified","buyandsell" = "BuySell","real-estate" = "RealEstate","business" = "Business"})
    */
    class Listing
    {

}

谢谢!

4

1 回答 1

0

类表继承的教义文档中,您可以找到一些使用它的注意事项。摘录一些重要事实:

  • 在设计时提供最大的灵活性,因为对任何类型的更改始终仅限于该类型的专用表
  • 这种策略本质上需要多个 JOIN 操作来执行几乎任何可能对性能产生负面影响的查询,尤其是对于大型表和/或大型层次结构

由于您只有一个继承级别(所有列表都扩展了您的 base Listing),因此影响不大。

于 2013-06-30T14:00:15.943 回答