#coldfusion #cfquery
#coldfusion #cfquery
Вопрос:
Когда я выбираю данные из таблицы MySQL с помощью тега cfquery в ColdFusion 8, все имена столбцов преобразуются в верхний регистр, хотя я сохранил их в camelCase в таблице базы данных. Есть ли способ заставить ColdFusion учитывать регистр имен столбцов?
Причина, по которой я спрашиваю, заключается в том, что я возвращаю результат запроса как объект JSON, и я не хочу использовать имена свойств в верхнем регистре на стороне JavaScript, поскольку я оставляю это соглашение об именовании для констант.
Ответ №1:
queryName.getMetaData().getColumnLabels()
возвращает массив меток столбцов запроса с исходным регистром из запроса
Комментарии:
1. Я думаю, им нужен регистр из базы данных. В этом случае им необходимо использовать cfdboinfo или таблицы метаданных MySQL, как упоминалось. Метод недокументированных метаданных возвращает регистр, используемый в sql, который может быть совершенно другим. Все зависит от того, как оно введено.
Ответ №2:
Используйте getMetadata для объекта запроса. Он возвращает массив столбцов, отображающих тот же регистр, который вы использовали в запросе.
Комментарии:
1. О, извините, вы хотите, чтобы регистр был таким, какой он есть в базе данных. Не верхний, а не то, что показал SQL. Лучшее, что вы можете сделать, это использовать cfdbinfo. Это должно сработать. Вам нужно будет использовать это и вернуть его вместе с результатом вашего запроса.
2. Чтобы уточнить, будет ли это означать, что мне придется отправлять в основном два объекта JSON, один из которых содержит результирующий набор, а другой — имена столбцов? Затем все же выполните некоторый алгоритм сопоставления, чтобы сопоставить данные с правильными свойствами? Или, возможно, есть способ объединить имена столбцов, полученные из cfdbinfo, с объектом результата запроса?
3. Я бы, вероятно, создал JSON вручную, используя имена столбцов из CFDBINFO-look-up и значения из запроса.