Как я могу заставить Coldfusion Reactor игнорировать некоторые столбцы в таблице? - PullRequest
0 голосов
/ 11 декабря 2018

Я использую Coldfusion 10 + Reactor в проекте.Я добавляю новое поле TIMESTAMP, которое будет автоматически обновляться до CURRENT_TIMESTAMP.Это работает, когда это новое поле не включено в объекты Reactor, например, Dao, To, Record.но он не получится после регенерации объектов ColdFusion.

, так как я могу игнорировать новое поле в реакторе?

Вот соответствующий код

<object name="Object">
    <hasOne name="XXXX">
        <relate from="KeyUUID" to="KeyUUID"/>
    </hasOne>
    ...
</object>

После того, как я регенерировалОбъекты ColdFusion, метод create / update в ObjectDao.cfc будет включать мое новое поле.ObjectDao.cfc регенерируется Reactor согласно моей таблице базы данных.Я хочу, чтобы это новое поле было исключено из объектов Reactor, например, Dao, To, Record.

<cfquery name="qCreate" datasource="#_getConfig().getDsn()#" username="#_getConfig().getUsername()#" password="#_getConfig().getPassword()#">
    INSERT INTO #Convention.FormatObjectName(getObjectMetadata())#
    (
            ...
            #Convention.formatInsertFieldName('newField', 'Object')#

    ) VALUES (
            ...
            <cfqueryparam cfsqltype="cf_sql_timestamp"

            value="#arguments.to.newField#"

                null="#Iif(NOT Len(arguments.to.lastModifiedDBTime), DE(true), DE(false))#"
             /> 
    )
    ...
</cfquery>

1 Ответ

0 голосов
/ 12 декабря 2018

Мы реализуем это путем обновления ObjectDao.cfc на данный момент.

<cffunction name="readFields" access="private" hint="I populate the table with fields." output="false" returntype="void">
...
    <cfloop query="qFields">
        <cfset blnProcess = true />
        <cfif structKeyExists(stcFieldsToSkip,arguments.Object.getName())>
           <cfif qFields.FIELD EQ stcFieldsToSkip[arguments.Object.getName()]>
               <cfset blnProcess = false />
           </cfif>
        </cfif>
        <cfif blnProcess>
            <!---
            mod by SPJ: in MySql 4 tinytext, text, mediumtext and longtext don't report their maxlength value, so we
            have to set it by hand.  The field lengths were obtained from http://www.cs.wcupa.edu/~rkline/mysqlEZinfo/data_types.html#Storage_requirements
        --->
            <cfswitch expression="#qFields.TYPE#">
                ...
            </cfswitch>
            <!--- end mod by SPJ --->

            <!--- create the field --->
            ...

            <!--- add the field to the table --->
            <cfset arguments.Object.addField(Field) />
        </cfif>
    </cfloop>
</cffunction>
...