Ок, у меня видимо не стыкуется, потому что в простейшем варианте это идет через юзера:
$user->projects
а тут вдруг инвертируется в
ProjectService->getBestProjectsByUser
вооот и я о том же. Получается мы оборачиваем что-то в Service а в этом сервисе что? Как мы получим проекты для пользователя?
1. $user->projects? - используем relation (не зря же их придумали и внедрили)
2. Project::getForUser($user)? - используем без связи, но нагружаем модель Project, у нас есть там не просто выборка в одну строку, а скажем подгружаются еще какие-то связи