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

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

Вот моя модель пользователя

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

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

Примечание : referred_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 голосов
/ 10 июля 2020

Вы можете использовать has('relationshipName'), который ограничивает ваши результаты в зависимости от наличия отношений в вашем случае пользователей, которые направили некоторые .

и withCount('relationshipName'), которые будут считать число результатов отношений, не загружая их.

User::has('referrals')->withCount('referrals')->get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...