【问题标题】:Doctrine Class Table Inheritance - Multiple TypesDoctrine 类表继承 - 多种类型
【发布时间】:2013-06-10 03:18:52
【问题描述】:

我正在尝试为 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
    {

}

谢谢!

【问题讨论】:

    标签: php inheritance symfony doctrine symfony-2.1


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      相关资源
      最近更新 更多