首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与Laravel的可变形关系作斗争

与Laravel的可变形关系作斗争
EN

Stack Overflow用户
提问于 2021-03-28 17:35:26
回答 1查看 23关注 0票数 0

在一个项目中,假设我们有客户,每个客户可以有一张代金券。然而,代金券可能是针对不同客户的不同东西-可能是针对旅馆、汽车或航班。

我们有一张机票代码表,一张酒店代金券代码表和一张汽车代码表。

因此,当客户分配到代金券时,我们会为他们分配下一个代码,用于他们要获得代金券的相关物品。但是,与其有多个表(customer_car_voucher、customer_hotel_voucher等等),我宁愿有一个凭证表,反过来,它又链接到相关的凭单类型。

我想要做的就是转到$customer->voucher->code来获取相关代码,无论是航班、酒店还是汽车。你看,以后可能会为不同的事情增加其他的代金券。

我想我可以使用可变形的关系-汽车、酒店和航班的代金券morphsTo,所以在代金券表格中有一个"voucherable_type“和一个"voucherable_id”。但如果我能让它起作用就糟透了。

有什么需要帮忙的吗?我说错了吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-28 22:28:40

你说得对。作为提示,请使用:

代码语言:javascript
运行
复制
  public function customer()
  {
    return $this->belongsTo(Customer::class):
  }

  public function voucherable()
  {
    return $this->morphTo();
  }

在凭证模型中。

对于每个航班、汽车、酒店,包括:

代码语言:javascript
运行
复制
public function voucher(){
    return $this->morphOne(Voucher::class,'voucherable');
}

您也可以查看Laravel morph relationship以获得更多帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66840026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档