gpt4 book ai didi

mysql - Laravel HasManyThrough,访问主要/次要用户推荐

转载 作者:行者123 更新时间:2023-11-29 16:48:28 25 4
gpt4 key购买 nike

我有一个应用程序,需要跟踪用户的主要和次要推荐。我的用户表如下所示:

用户表

  • 名称,varchar
  • 电子邮件、varchar
  • referral_id,varchar
  • referrer_id,varchar

我目前使用以下方式访问主要推荐人/推荐人:

public function referrer() 
{
return $this->belongsTo(User::class, 'referrer_id', 'referral_id');
}

public function primaryReferrals()
{
return $this->hasMany(User::class, 'referrer_id', 'referral_id');
}

例如,我正在尝试找出如何访问“二级”推荐。

用户 A 邀请用户 B。然后用户 B 邀请用户 D、E、F。从用户 A 模型中,我希望能够调用类似 $user-> secondaryReferrals 的内容并获取用户 D ,E,F。

我猜我需要使用类似的东西:

public function secondaryReferrals() 
{
return $this->hasManyThrough(
User::class,
User::class,
'referrer_id',
'referrer_id',
'referral_id',
'referral_id'
);
}

但是我不清楚我应该提供哪些键/ID...或者这是否是正确的使用位。我尝试了混合,但在使用 sqlite 时不断出现列名不明确错误,在使用 mysql 驱动程序时不断出现其他错误。

用户A:{ 引用者 ID:空, Referral_id: 'abc'}

用户B:{ Referrer_id: 'abc', 推荐 ID:'def'}

用户C:{ Referrer_id: 'def', Referral_id: 'ghi'}

我希望能够通过用户 B 的推荐代码从用户 A 访问用户 C。

最佳答案

此处不能使用 HasManyThrough 关系,因为无法指定表别名。

您可以使用 primaryReferrals 关系两次:

public function getSecondaryReferralsAttribute() 
{
$this->load('primaryReferrals.primaryReferrals');

return $this->primaryReferrals->pluck('primaryReferrals')->flatten();
}

// $user->secondaryReferrals

关于mysql - Laravel HasManyThrough,访问主要/次要用户推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52954966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com