Не удается найти разницу между доступом к свойству в запросе с помощью «[скобок]» и «. точка 'обозначение - PullRequest
4 голосов
/ 16 апреля 2019

У меня есть фрагмент кода, в котором я извлекаю строки из базы данных и нахожу dateDiff из одного из столбцов в запросе.

<cfquery name="querySearchUUID" maxrows="1">
   SELECT [DateInvited] 
   FROM [INVITE_PERSON] 
   WHERE [UUID] = 
  <cfqueryparam value="#arguments.userUUID#"cfsqltype="cf_sql_varchar">
</cfquery>

<cfif querySearchUUID.RecordCount EQ 1>
   <cfif dateDiff('h', querySearchUUID.DateInvited, now()) LTE 24>
       <cfreturn true>
   <cfelse>
       <cfreturn false>
   </cfif>
<cfelse>
  <cfreturn false>
</cfif>

Однако, когда я изменяю код querySearchUUID.DateInvited на querySearchUUID['DateInvited'] в dateDiff(), происходит сбой, я не знаю почему.

Здесь произошла ошибка.

The value class coldfusion.sql.QueryColumn cannot be converted to a date.

Может кто-нибудь, пожалуйста, объясните мне, в чем именно разница. Спасибо.

1 Ответ

1 голос
/ 23 апреля 2019

По моему опыту, это зависит от того, как используется переменная. Когда вы используете его в теге cfdump, магия ColdFusion печатает значение из ячейки в первой строке. Когда вы передаете его в функцию, передается исходный объект типа coldfusion.sql.QueryColumn. Вы всегда можете найти тип, вызывающий getMetadata, например <cfdump var="#getMetadata(querySearchUUID['DateInvited'])#">

Когда вам нужно передать значение, вы должны использовать номер строки querySearchUUID['DateInvited'][ 1 ], начиная с единицы для первой строки.

...