Обычно это работа для ORM . Практически в каждом фреймворке используется одна реализация (т. Е. Doctrine для PHP / Symfony или Hibernate для Java), но, естественно, вы можете реализовать свой собственный ORM (ORM часто реализуется с помощью самоанализа).
Когда у вас есть библиотека ORM, вы определяете отношения между моделями в «фазе установки» (в вашем случае у вас будет «у пользователя много отзывов»). Затем вы будете использовать методы ORM, которые знают, как с ними обращаться (часто отношения взаимны, т. Е. «Обзор принадлежит пользователю»). Концепция заключается в том, что на этом этапе настройки вы избавитесь от проблем, подобных той, которую вы указали.
Мое предложение состоит в том, чтобы использовать одну из уже существующих реализаций ORM, которая уже предоставляет средства для методов получения и установки связанных моделей. В другом случае вам придется самостоятельно создавать специальные методы получения и установки для каждой модели.