在一个项目中,假设我们有客户,每个客户都可以有一个代金券。但是,对于不同的客户,代金券可能用于不同的事情-可能是酒店、汽车或航班。
我们有一个表的航班优惠券代码,一个表的酒店优惠券代码和一个表的汽车优惠券代码。
因此,当一个客户被分配到一张凭证时,我们会为他们分配下一个代码,表示他们要获得凭证的相关内容。但是,与其使用多个表(customer_car_voucher、customer_hotel_voucher等),我更愿意使用一个凭证表,该表反过来链接到相关的凭证类型。
我想做的就是进入$customer-〉voucher-〉code来获取相关的代码,不管是航班、酒店还是汽车,其他的voucher可能会在以后添加,你看,用于不同的事情。
我想我可以使用可变形关系来做到这一点--凭证变形为汽车、酒店和航班,因此在凭证表中有一个“voucherable_type”和一个“voucherable_id”。
能帮个忙吗,我是不是做错了
3条答案
按热度按时间vptzau2j1#
你做得对。给你个提示用途:
在凭证模型中。
每个航班、汽车、酒店包括:
您也可以查看Laravel morph relationship以获得更多帮助。
6yt4nkrj2#
在Laravel的Eloquent中,ORM用于可变形关系。
首先,创建两个模型
AirVoucher
和Voucher
。首先,
AirVoucher
模型使用以下关系。其次,
Voucher
模型使用以下关系。您可以使用以下Laravel官方关系文档获取更多帮助。
Laravel Morph Relationships.
zte4gxcn3#
必须使用laravel多态关系。
在
Voucher model
中,将该模型设置为多晶型模型(function name = modelname+"able"
):则在
Car model
(或酒店/航班)集合关系(function name= polymorph name
)中:如果每辆车都有
one
代金券,请使用morphOne:如果每辆车都有
many
代金券,则使用morphMany:恢复关系
拉腊维尔文件公司