Я хочу вернуть пользователя со списком всех людей, которых они перенаправили по имени пользователя - PullRequest
0 голосов
/ 01 августа 2020

Я разрабатываю реферальную систему в своем программном обеспечении. Я получил право направления, но я хочу перечислить всех пользователей, на которых ссылаются пользователи auth.

Примечание: я пишу конечную точку API, поэтому я не могу использовать отношения для отображения их имени. Вот моя модель пользователя

public function referrals()
{
    return $this->hasMany(Referral::class, 'user_id', 'id');
}

public function referrer()
{
    return $this->hasOne(Referral::class, 'referred_by', 'id');
}

Примечание: refer_by - это лицо, которое направило кого-то, а user_id - это лицо, направленное

Вот моя реферальная модель

protected $fillable = ['user_id', 'referred_by', 'status'];

public function user()
{
    return $this->belongsTo(User::class);
}

Вот моя миграция рефералов

Schema::create('referrals', function (Blueprint $table) {
            $table->id();
            $table->integer('user_id')->unsigned()->references('id')->on('users');
            $table->integer('referred_by')->unsigned()->references('id')->on('users');
            $table->string('status')->nullable();
            $table->timestamps();
        });

1 Ответ

2 голосов
/ 01 августа 2020

Модель пользователя

// Referrals given by the user.
public function referralsGiven()
{
    return $this->hasMany(App\Referral::class, 'referred_by', 'id');
}

Реферальная модель

//Person who got the referral
public function user()
{
    return $this->belongsTo(App\User::class, 'user_id', 'id');
}

public function referredBy()
{
    return $this->belongsTo(App\User::class, 'referred_by', 'id');
}

метод сбора щипка https://laravel.com/docs/7.x/collections#method -pluck

Контроллер

$user = User::with('referralsGiven.user')->find(Auth::user()->id);

$users_reffered_by_Auth_user = $user->referralsGiven->pluck('user');

ИЛИ

$referrals = Referral::with('user')->where('reffered_by', Auth::user()->id)->get();

$users_reffered_by_Auth_user = $referrals->pluck('user');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...