Php Laravel Eloquent-一张桌子有多个模型
我有3个很有说服力的模型,它们几乎相同,代表折扣:Php Laravel Eloquent-一张桌子有多个模型,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我有3个很有说服力的模型,它们几乎相同,代表折扣: 绝对折扣 OneProductforFree折扣 数量折扣 它们都将得到一个名为“canBeApplied(Productable$Productable)”的方法。它会查看给定的可生产产品,然后确定该可生产产品是否有资格享受它所代表的折扣。对于这3种不同的折扣,此方法的实现是不同的 现在,它们的属性基本相同。它们都具有以下属性: 名称、活动、有效的\u来源、有效的\u槽。因此,我认为我需要一个包含这些字段/列的数据库表来表示这3个折扣雄辩
- 绝对折扣
- OneProductforFree折扣
- 数量折扣
- 身份证
- 名字
- 可贴现型
- 活跃的
- 有效的
- 有效期至
- 为要扩展的折扣模型创建一个基本的雄辩模型
- 重写每个折扣中的where方法,在返回它之前附加一个where方法调用,并将其作为其内容('discountable_type','=',AbsoluteDiscount::class)
但是我们还有一些方法:get、first、all,可能还有更多需要重写的方法。那么储蓄呢?所有3种折扣模式都需要执行这些步骤。有没有一种简单的方法可以做到这一点,或者这是我不能做的事情?我想你可以在这里使用这个特点:
但是,它基于singleTableTypeField属性,该属性不允许通过条件获取子级,只允许通过某种类型的type_id列。但我认为修改它以满足您的需要并不难。您看过文档中的多态关系吗?