Когда избыток знаний тормозит разработку

Как уже писал, никак не получается вернуться к своим проектам. Ни доделать релиз IntB (а для этого — добавить поддержку PostgreSQL и SQLite и исправить кое-какие мелочи), ни вернуться к мобильному сообществу. Причём на последнем я застрял на проблеме избыточного выбора. Нужно реализовать простейшую задачу (выборка данных о сообщениях и их авторах, самый обычный LEFT JOIN по id), но в голове крутится целых 6 вариантов реализации (не считая неприемлемого — использования стороннего ORMа), и никак не могу определиться, какой лучше. Точнее даже так: вижу плюсы и минусы каждого, но никак не могу выбрать, чем пожертвовать: красотой и логичностью кода или возможностью выдернуть все данные одним запросом, а не несколькими.
Эх, вспоминаю, как всё просто было во времена IntB 2.x: там я в каждой таблицы для каждого столбца делал префикс с одинарным или двойным подчёркиванием (например, для пользователей все поля начинались на u_ или u__ в зависимости от того, может ли их менять сам пользователь, для сообщений — на p_), и по этому префиксу на стороне PHP поля было элементарно разделить (а также это защищало от одинаковых имён столбцов в одном запросе). Сейчас такое решение воспринимается как топорное и «студенческое». Но все те решения, которые воспринимаются как нормальные, имеют свои недостатки: либо нужно делать как минимум два запроса, либо где-то хранить список полей в самом классе, либо использовать attributes, которые появились только в PHP 8. Впрочем, пока я это писал, пришла в голову новая мысль: использовать Reflection и проверять с его помощью, в каком из классов есть соответствующее поле. Для простых случаев типа мобильного сообщества этого будет достаточно.