什么时候不应该使用多态关系?

时间:2019-07-31 16:55:41

标签: laravel-5 eloquent

在有6个公共列和2个名称不同的列的情况下,可以使用polymorphic relation吗?

我需要跟踪maintenancerefueling的汽车。

maintenances - table
    -date
    -km_driven
    -info (refers to maintenance info )

refuelings - table
    -date
    -km_driven
    -amount (refers to amount in liters)

那么,我应该使用多态关系吗?每个模型有更多不同的列可以吗?

1 个答案:

答案 0 :(得分:0)

针对您的情况的恕我直言,我将寻求单表继承(STI),但是您需要一个像这样的库tightenco/parental或这个Nanigans/single-table-inheritance

没有外部库,Laravel代码库不支持STI。您可以尝试使用多态关系来解决您的情况,但最终将得到3个不同的表。我认为您想使用带有两个甚至三个模型的单个表,所以我的建议是尝试上面的STI库之一。

当模型具有共享的数据/状态时,

STI是合适的。 共享行为是可选的,因为可以根据模型进行定义。一个例子可能是不同类型的车辆型号:汽车,卡车,自行车等

使用多态关系,模型可以belong_to具有单个关联的多个模型。当多个模型没有关系或彼此共享数据,但与多态类有关系时,此功能很有用。一个示例可能是评论模型,该模型可以属于其他模型:用户,帖子,图像等。