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属性)
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">