laravel拥有许多权限,可以访问主要/次要用户引用

ru9i0ody  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(329)

我有一个应用程序,我需要跟踪用户的主要和次要转介。我的用户表如下所示:
用户表
姓名,瓦查尔
电子邮件,varchar
转介id,varchar
推荐人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。从用户的模型,我想能够调用类似的东西 $user->secondaryReferrals 得到用户d,e,f。
我想我需要用这样的方法:

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

但是我不清楚我应该提供什么密钥/ID…或者这是否是正确的使用位。我试过混音,但我一直在变 ambiguous column name 使用sqlite时出错,使用mysql驱动程序时出现其他错误。
usera:{referer\u id:null,referer\u id:''}
userb:{referer\u id:'',referer\u id:'def'}
userc:{referer\u id:'def',referer\u id:'ghi'}
我希望能够通过用户b的参考代码从用户a访问用户c。

t0ybt7op

t0ybt7op1#

你不能使用 HasManyThrough 关系,因为无法指定表别名。
你可以用 primaryReferrals 关系两次:

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

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

// $user->secondaryReferrals

相关问题