我有 3 个 Eloquent 模型,它们几乎相同并且代表折扣:
他们都会得到一个名为“canBeApplied(Productable $productable)”的方法。它确实查看了给定的产品,然后确定产品是否有资格获得它所代表的折扣。对于这 3 种不同的折扣,此方法的实现是不同的。
现在,它们的属性几乎相同。它们都具有以下属性:
名称、事件、valid_from、valid_trough。所以我想我需要有一个包含这些字段/列的单个数据库表来表示这 3 个折扣 Eloquent 模型:
然后,discountable_type 列将是折扣的完全限定类名称。如果是 10 美元和 20 美元的礼品卡,您将使用名称“礼品卡 - 10 美元”和“20 美元”,并且它们都是“Namspace\For\AbsoluteDiscount\AbsoluteDiscount”的 discountable_type。
我想我需要做的是:
但随后我们也有方法:get、first、all 以及可能需要覆盖的更多方法。那储蓄呢?并且需要对所有 3 个折扣模型执行这些步骤。有没有一种简单的方法可以做到这一点,还是我不能这样做?
最佳答案
我认为你可以在这里使用这个特性:https://github.com/Nanigans/single-table-inheritance
但是,它基于 singleTableTypeField 属性,该属性不允许通过条件获取子项,只能通过某种 type_id 列。但我认为修改它以满足您的需求并不难。
关于php - Laravel Eloquent - 一张 table 的多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49057897/