Symfony 学说继承与联系

Symfony 学说继承与联系,symfony,inheritance,doctrine,entity-relationship,model-associations,Symfony,Inheritance,Doctrine,Entity Relationship,Model Associations,我有实体图像和属性: class Image { private $id private $name; private $mimeType; private $size; } 现在,我需要添加新的图像类型,它将具有所有属性作为现有类,以及一些新属性,如作者名称、外部url、指向作者的url。。。我们称之为外部图像。现有图像不需要这些属性 然后我需要将image属性添加到Event类中,它可以是image或ExternalImage 另一个用例是,我需要列出所有图像(在某个API端点上

我有实体图像和属性:

class Image {   

private $id
private $name;
private $mimeType;
private $size;  }
现在,我需要添加新的图像类型,它将具有所有属性作为现有类,以及一些新属性,如作者名称、外部url、指向作者的url。。。我们称之为外部图像。现有图像不需要这些属性

然后我需要将image属性添加到Event类中,它可以是image或ExternalImage

另一个用例是,我需要列出所有图像(在某个API端点上同时列出这两种类型)

我的解决办法是:

ExternalImage extends Image
 .. add new properties
并使用单表主义的继承。然后将OneToOne关联添加到事件类(添加图像id属性)


  • 继承适合这个例子吗?从我的角度来看,我看不到任何其他解决方案。我们在图像和外部图像之间有很强的“是”关系
  • 我知道使用STI实体作为一对一关联的目标实体存在性能问题-在获取事件对象时不会延迟加载映像实体。我能做点什么吗

  • tbh,我还没有看到一个明确的例子,说明STI甚至比“合并”类更好。当然,您可以将一些逻辑划分为不同的类,但据我所知,这是唯一的好处,除此之外,您还有额外的类检查、奇怪的思维扭曲和所有设置麻烦。所以,我真的真的真的怀疑实际上任何一种学说的继承;o/您可以通过@Jakumi-hmm来实现,但我不喜欢图像(基本图像)具有它不需要/使用的属性的想法。此类型的图像没有外部URL。我还需要通过应用程序跟踪图像/外部图像的使用情况。关于条令继承和低性能,你最害怕的是什么?这不是性能,但问问你自己,你已经在这方面花费了多少时间,当你面对一个类所不能解决的问题时,这可能需要更多的时间。您仍然可以添加一个字段“type”,该字段包含一些int,其中0表示图像,1表示外部图像或其他任何内容,您可以跟踪它。然而,仅仅因为到目前为止我还没有很好的条令继承映射经验,这最终并不意味着什么。也许我只是没有正确的心态。tbh,我还没有看到一个明确的例子,说明STI甚至比“合并”类更好。当然,您可以将一些逻辑划分为不同的类,但据我所知,这是唯一的好处,除此之外,您还有额外的类检查、奇怪的思维扭曲和所有设置麻烦。所以,我真的真的真的怀疑实际上任何一种学说的继承;o/您可以通过@Jakumi-hmm来实现,但我不喜欢图像(基本图像)具有它不需要/使用的属性的想法。此类型的图像没有外部URL。我还需要通过应用程序跟踪图像/外部图像的使用情况。关于条令继承和低性能,你最害怕的是什么?这不是性能,但问问你自己,你已经在这方面花费了多少时间,当你面对一个类所不能解决的问题时,这可能需要更多的时间。您仍然可以添加一个字段“type”,该字段包含一些int,其中0表示图像,1表示外部图像或其他任何内容,您可以跟踪它。然而,仅仅因为到目前为止我还没有很好的条令继承映射经验,这最终并不意味着什么。也许我只是没有正确的心态。
    <one-to-one field="image" target-entity="App\Common\Entity\Image">