Нужно разбирать запрос, что-то менять, вытягивать список полей и их алиасы. Пробовал: https://github.com/phpmyadmin/sql-parser
Но там много проблем. В частности с конструкциями case when
sim3x, допустим есть CASE WHEN a = 42 THEN a else b END AS Status
он игнорирует AS Status
А это перечеркивает весь остальной функционал. Тут видимо придется городить свой парсер отдельно под CASE WHEN
sim3x, допустим строится таблица по результатам запроса и надо отдельно иметь конфиг с заголовками. Соответственно надо получить количество, названия и алиасы возможных полей.
Но в реале там много чего с запросом происходит, по сути визуальный редактор запроса. Сложный и безжалостный )). При чем все есть и отлично работает кроме разбора CASE WHEN.
sim3x, при чем тут ORM? Если надо парсить sql строку? Построить запрос по конфигу не проблема. Проблема именно о парсинге sql запроса.
Нужно разбирать запрос, что-то менять, вытягивать список полей и их алиасы
Как конкретнее? Какой парсер даст вытянуть из sql столбцы и их алиасы? https://github.com/phpmyadmin/sql-parser это дает, кроме случая с CASE WHEN a = 42 THEN a else b END AS Status
Что еще описать надо? Мне нужно или решение проблемы с CASE WHEN в конкретном парсере или ссылка на аналогичный парсер где такой проблемы нет. При этом годится и php и js. И именно это описано в вопросе.
Получить название полей проще после создания таблицы
Какой таблицы? Мы не создаем таблицы в СУБД, это проcто SELECT
есть sql пользовательский, распарсили, выбрали столбцы, дали пользователю фому, где он для столбцов тайтлы указывает. Отправил. Сохранили. Итого есть sql и некий конфиг для html таблицы. Все ок, пока в запросе не появляется CASE WHEN. Данный парсер не адекватно парсит CASE WHEN, а именно теряет алиас AS Status например, а он нужен.