我有一个具有多个功能的cfc文件(info.cfc),如下所示。如何从一个cfc文件中的函数查询中调用另一个CFC文件中的函数?
<cfcomponent output="true" extends="DateFunctions">
<cffunction name="getStatuses" access="remote" returntype="any" output="true" returnformat="plain">
...
</cffunction>
<cffunction name="viewDate" access="remote" returntype="any" output="true" returnformat="plain">
<cfquery name="records">
SELECT
dbo.tickets.Incident,
dbo.tickets.Start_Date,
dbo.tickets.Days_Due
FROM
dbo.tickets
</cfquery>
</cffunction>
</component>
而另一个cfc文件(DateFunctions.cfc)包含一个带有两个参数的函数并返回一个日期。 的DateFunctions.cfc文件如下:
<cfcomponent output="true" name="DateFunctions"">
<cffunction name="addBusinessDays" access="remote" returntype="any" output="true" returnformat="plain">
<cfargument name="daysToAdd"
required="yes"
type="numeric"
hint="The number of whole business days to add or subtract from the given date">
<cfargument name="date"
required="No"
type="date"
hint="The date object to start counting from.."
default="#NowDateTime#">
...
... <!--- Perform some tasks --->
<cfreturn Date>
</cffunction>
</cfcomponent>
问:我如何可以调用“addBusinessDays”从查询内(info.cfc)也产生效果的另一列。
我想我可能已经能够做一些事情,如:
<cffunction name="viewDate" access="remote" returntype="any" output="true" returnformat="plain">
<cfquery name="records">
SELECT
dbo.tickets.Incident,
dbo.tickets.Start_Date,
dbo.tickets.Days_Due,
(
<cfinvoke component="DateFunctions" method="addBusinessDays" returnVariable="Date">
<cfinvokeargument name="daysToAdd" value="#dbo.tickets.Days_Due#">
<cfinvokeargument name="date" value="#dbo.tickets.Start_Date#">
</cfinvoke>
) AS Due_DATE
FROM
dbo.tickets
</cfquery>
</cffunction>
这应该处理视图页面上进行时,HTML生成 –
为了回答这个问题,我们需要看到addBusinessDays代码。 –
(编辑)不能以这种方式使用CFC。 ColdFusion服务器和数据库完全分离。 CF对数据库对象一无所知,数据库对CFML一无所知,所以你不能用这种方式来混合这两种。 ColdFusion的唯一工作就是充当信使。它在执行查询之前执行它的工作*。 CF会评估任何cfml代码并将所有内容转换为文字。然后它生成一个SQL字符串并将该字符串发送到数据库以供执行。数据库完成剩下的工作。 – Leigh