Есть 2 модели User и Game. У игры есть 2 участника, в дальнейшем планируется сделать больше, поэтому создал таблицу participants с полями "user_id, game_id".
Кроме этого, у пользователя могут быть рефералы и мне нужно подсчитать суммарное кол-во сыгранных реферралами игр.
Вот код:
//User
public function games()
{
return $this->belongsToMany(Game::class, 'participants');
}
public function referrer()
{
return $this->hasOne(User::class, 'id', 'referred_by');
}
public function referrals()
{
return $this->hasMany(User::class, 'id', 'referred_by');
}
А вот Game:
public function participants()
{
return $this->belongsToMany(User::class, 'participants');
}
Пробовал что-то вроде
public function ref_games_count()
{
$this->referrals()->whereHas('games')->selectRaw('participants.*, sum(participants.count)')->first();
}
Но понял, что это бред. Нужна помощь.