我想知道根据一些变量存储不同信息的最佳做法是什么。
例如,我有一个ServerEntity
,我想用ServerDiskEntity
存储插入该服务器的磁盘。
- 如果这个磁盘是SSD,我想存储NAND类型(MLC、SLC、TLC(
- 如果这个磁盘是HDD,我想存储RPM
然后,当我请求ServerEntity->getDisks()
时,我检查类型是否为SSD,显示NAND类型,如果HDD类型显示RPM。
把所有东西都存储在同一个实体中对我来说很糟糕。拥有两个单独的实体(没有其他东西把它们粘在一起(不是一种选择,因为我存储了一些其他信息,比如托盘号。
我最接近的猜测是:ServerDiskEntity
存储DiskType
和DiskId
,我将这些信息用于getRepository(diskType)->findOneBy(["id" => $DiskId])
,但从我的POV来看,这似乎也没有得到优化。
请有人教我一些魔术,让我有一个干净的方法来做到这一点(我想避免使用ElasticSearch:d(
单表继承(或联接表继承(就是答案:
https://digitalfortress.tech/php/configure-doctrine-multiple-target-entities/