在有6个公共列和2个名称不同的列的情况下,可以使用polymorphic relation
吗?
我需要跟踪maintenance
和refueling
的汽车。
maintenances - table
-date
-km_driven
-info (refers to maintenance info )
refuelings - table
-date
-km_driven
-amount (refers to amount in liters)
那么,我应该使用多态关系吗?每个模型有更多不同的列可以吗?
答案 0 :(得分:0)
针对您的情况的恕我直言,我将寻求单表继承(STI),但是您需要一个像这样的库tightenco/parental或这个Nanigans/single-table-inheritance。
没有外部库,Laravel代码库不支持STI
。您可以尝试使用多态关系来解决您的情况,但最终将得到3个不同的表。我认为您想使用带有两个甚至三个模型的单个表,所以我的建议是尝试上面的STI库之一。
STI
是合适的。 共享行为是可选的,因为可以根据模型进行定义。一个例子可能是不同类型的车辆型号:汽车,卡车,自行车等。
使用多态关系,模型可以belong_to
具有单个关联的多个模型。当多个模型没有关系或彼此共享数据,但与多态类有关系时,此功能很有用。一个示例可能是评论模型,该模型可以属于其他模型:用户,帖子,图像等。