Вы, наверное, невнимательно прочитали вопрос. Нет там чего-то вроде hasManyThroughManyToMany. Если для Вас это просто, то пожалуйста, покажите свое решение, буду благодарен.
Окей, вроде бы штатными средствами лары такое не сделать. Посмотрите этот пакет staudenmeir/eloquent-has-many-deep, вроде бы он позволяет делать отношения произвольной глубины, но подойдёт-ли вам — не знаю. А вообще, гляньте так же вот это: spatie/laravel-permission, пакет для лары специально для разграничения прав по юзерам и ролям. Очень удобный, но он использует немного другой подход, нежели у вас.