У меня есть приложение, в котором мне нужно отслеживать первичных и вторичных рефералов пользователя.Моя таблица пользователей выглядит так:
таблица пользователей
- name, varchar
- email, 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'
);
}
Однако мне не ясно, чтоключи / идентификаторы, которые я должен предоставить ... или, если это даже правильный бит для использования.Я пытался смешать, но я продолжаю получать ambiguous column name
ошибок при использовании sqlite и других ошибок при использовании драйвера mysql.
UserA: {referer_id: null, referral_id: 'abc'}
UserB: {referrer_id: 'abc', referral_id: 'def'}
UserC: {referrer_id: 'def', referral_id: 'ghi'}
Я хочу иметь доступ к пользователю Cот пользователя A через реферальный код пользователя B.