Laravel Повторное использование функции Deep Relationship - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть приложение Laravel, и я определил следующие таблицы:

Я хочу получить РЕЦЕПТЫ, принадлежащие ПОЛЬЗОВАТЕЛЮ, который принадлежит СПОНСОРУ, который пожертвовал данному КОНКУРСУ, в котором участвовал РЕЦЕПТ

User
Sponsor_User
Sponsor
Competition_Sponsor
Competition
Recipe (has competition_id)

с цепочкой отношений:

Теперь я хочу загрузить ВСЕ РЕЦЕПТЫ, которые принадлежат данному пользователю, с user_id = x

Как я всегда могу получить в по крайней мере, список / массив recipe_ids, которые принадлежат user_id = x

Я сделал следующее, но мне не нравится повторное использование этого:

        return $query->select('recipes.*')
        ->join('competitions', 'competition.id', '=', 'recipes.competition_id')
        ->join('sponsor_competitions', 'sponsor_competitions.competition_id', '=', 'competitions.id')
        ->join('sponsors', 'sponsors.id', '=', 'sponsor_competitions.sponsor_id')
        ->join('sponsors_users', 'sponsors.id', '=', 'sponsors_users.sponsors_id')
        ->join('users', 'users.id', '=', 'sponsors_users.user_id')
        ->where('users.id', '=', $userId)
        ->distinct();
...