Я пытаюсь создать настраиваемую и расширяемую систему профилей для моей CMS. С точки зрения пользователя это просто, но для администратора я хочу, чтобы все данные, включая данные профиля, были доступны для поиска. Поля профиля могут быть добавлены "плагинами", которые также могут добавлять новые поля для поиска. Я не знаю, возможно ли то, что я пытаюсь сделать с MySQL, чтобы сделать эту работу, или я делаю это совершенно неправильно.
Итак, пользователи хранятся в одной таблице (пользователи) со столбцами для идентификатора, адреса электронной почты, пароля и уровня доступа.
Затем у меня есть другая таблица с информацией о профилях (профилях), сохраненной как user_id, параметр и значение. В конечном итоге параметр может быть снова помещен в отдельную таблицу (чтобы он не повторялся), но сейчас я оставлю это так.
Параметр и значение в основном являются данными профиля. Например, параметром может быть «возраст», а значением может быть «22».
То, что я хочу попробовать, - это выбрать таблицу пользователей с объединенной информацией профиля, чтобы параметр был сопоставлен с дополнительным столбцом. В итоге получается так, прямо из MySQL:
id email password access_level age
1 a@a.com ***** 1 22
2 b@b.com ***** 2 25
3 c@c.com ***** 2 25
Я просматривал сводные таблицы весь день, но из всего, что я вижу, "имя столбца" предопределено. В этом случае я хочу, чтобы «имя столбца» происходило из самой строки.
Если это невозможно сделать с помощью одного запроса, какие еще существуют методы? Я использую PHP, если лучший способ сделать это через это.
Любые предложения будут высоко оценены. :)