Пагинирование внутренних записей объекта laravel
У меня есть задача, где имеется вот такой фронт сайта:

Необходимо передать на клиентскую часть эти данные с пагинацией.
У этой страницы есть вот такие таблицы связью многие ко многим:

Следовательно я создаю в моделях связи:
Предметы:
class Subject extends Model
{
use HasFactory;
public $timestamps = false;
/**
*
* Получение связанного атрибута преподаватели
*
* @return BelongsToMany
*/
public function professors(): BelongsToMany
{
return $this->belongsToMany(Professor::class, "subjects_of_professor");
}
/**
*
* Получение связанного атрибута предметы преподавателей
*
* @return HasMany
*/
public function subjectsOfProfessor(): HasMany
{
return $this->hasMany(SubjectsOfProfessor::class, "subject_id", "id");
}
}
Преподаватели:
class Professor extends Model
{
use HasFactory;
public $timestamps = false;
protected $hidden = [];
/**
*
* Получение связанного атрибута предметы
*
* @return BelongsToMany
*/
public function subjects(): BelongsToMany
{
return $this->belongsToMany(Subject::class, "subjects_of_professor");
}
}
И тут проблема, каким образом можно получить эти данные с пагинацией таким образом, чтобы на этой странице выводился преподаватель два раза, если например у этого преподавателя два предмета.
Пример:
Иванов Иван Иванович - математика
Иванов Иван Иванович - русский язык
При этом, у Иван Ивановича могут быть 10 предметов, а на странице, например, нужно вывести только 5 таких записей, следовательно на следующей странице должны вывесить остальные 5 предметов этого преподавателя.
Есть ли решение этой проблемы, кроме как делать много запросов к базе данных?