我有一个应用程序,我需要跟踪用户的主要和次要转介。我的用户表如下所示:
用户表
姓名,瓦查尔
电子邮件,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。
1条答案
按热度按时间t0ybt7op1#
你不能使用
HasManyThrough
关系,因为无法指定表别名。你可以用
primaryReferrals
关系两次: