Я пытаюсь создать рекурсивную функцию в Coldfusion и сталкиваюсь с некоторыми проблемами.
Вот логика, которая у меня есть:
<cffunction name="getEvents" access="private">
<cfargument name="strtdate">
<cfargument name="parentID" default=0>
<cfqeury name="qry" datasource="db">
select *
from table
where parentid = #parentid# and
starttime between #strtdate# and #DateAdd('d', 1, strtdate)#
</cfquery>
<cfset events = arraynew(1)>
<cfloop query="qry">
<cfset events[qry.currentrow] = structnew()>
<cfset events[qry.currentrow].id = qry.id>
<cfset subevents = getEvents(strtdate, qry.id)>
<cfif arraylen(subevents)>
<cfset events[qry.currentrow].subevents = subevents>
</cfif>
</cfloop>
<cfreturn events>
</cffunction>
Проблема заключается в том, что, как только функция вызывает себя, она теряет исходный запрос в цикле.Сейчас у меня три уровня глубины, но я не хочу исправлять одно и то же закодированное снова и снова, чтобы обрабатывать все события.
Я хотел бы закончить с массивом структур, который содержит все события и вложенные события для данного дня.