在一个项目中,假设我们有客户,每个客户可以有一张代金券。然而,代金券可能是针对不同客户的不同东西-可能是针对旅馆、汽车或航班。
我们有一张机票代码表,一张酒店代金券代码表和一张汽车代码表。
因此,当客户分配到代金券时,我们会为他们分配下一个代码,用于他们要获得代金券的相关物品。但是,与其有多个表(customer_car_voucher、customer_hotel_voucher等等),我宁愿有一个凭证表,反过来,它又链接到相关的凭单类型。
我想要做的就是转到$customer->voucher->code来获取相关代码,无论是航班、酒店还是汽车。你看,以后可能会为不同的事情增加其他的代金券。
我想我可以使用可变形的关系-汽车、酒店和航班的代金券morphsTo,所以在代金券表格中有一个"voucherable_type“和一个"voucherable_id”。但如果我能让它起作用就糟透了。
有什么需要帮忙的吗?我说错了吗?
发布于 2021-03-28 22:28:40
你说得对。作为提示,请使用:
public function customer()
{
return $this->belongsTo(Customer::class):
}
public function voucherable()
{
return $this->morphTo();
}
在凭证模型中。
对于每个航班、汽车、酒店,包括:
public function voucher(){
return $this->morphOne(Voucher::class,'voucherable');
}
您也可以查看Laravel morph relationship以获得更多帮助。
https://stackoverflow.com/questions/66840026
复制相似问题