首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雄辩hasOneThrough关系

雄辩hasOneThrough关系
EN

Stack Overflow用户
提问于 2022-06-17 09:35:14
回答 1查看 30关注 0票数 1

目前,我的数据库设置如下所示:

用户表(用户模型):

  • email

  • id

折扣表(优惠券模式)

  • code
  • amount

现在,我决定创建一个支点表,在那里我将为用户存储一个折扣值。一个用户将有一个单一的折扣值。为此,我使用以下表设置创建了PractitionerVoucher模型:

  • voucher_id
  • practitioner_id

创建优惠券记录后,我将coupon_id (本例中的voucher_id)和user_id (本例中的practitioner_id)值保存到PractitionerVoucher表中。现在,我的问题是,如何从优惠券模型中获取用户记录?例如:

代码语言:javascript
复制
$coupon = Coupon::first();
$coupon->practitioner;

我试图在hasOneThrough模型上创建Coupon关系,但到目前为止还没有成功。这就是我试过的:

代码语言:javascript
复制
public function practitioner(){
  return $this->hasOneThrough(User::class, PractitionerVoucher::class, 'practitioner_id', 'id');
}

使用这种关系,我不会获得User模型的查询结果。我的数据库记录是这样的:

优惠券表

PractitionerVoucher表:

我在这里做错什么了?任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2022-06-17 22:18:31

通过在用户表上添加一个coupon_id列,并在用户优惠券模型之间定义一对多关系,可以很容易地完成您想要实现的任务--不需要枢轴表。

用户模型研究

代码语言:javascript
复制
public function discount()
{
    return $this->belongsTo(Coupon::class, 'coupon_id');
}

关于优惠券模型

代码语言:javascript
复制
public function users()
{
    return $this->hasMany(User::class);
}

然后你就可以利用这种关系

代码语言:javascript
复制
$coupon = Coupon::with('users')->first();
$coupon->users;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72657287

复制
相关文章

相似问题

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