Как я могу запретить Coldfusion преобразовывать имена столбцов запроса в верхний регистр?

#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 и значения из запроса.