我有一个CFC,它包含一个运行一个存储过程的方法/函数,然后输出两个结果集。像这样(缩短阅读速度的代码):
<cffunction name="OrdersandRegions" returntype="query" returnformat="JSON">
<cfstoredproc procedure="GetUserInfo">
<cfprocresult name = "UserOrders" resultset="1">
<cfprocresult name = "UserRegions" resultset="2">
</cfstoredproc>
<!--- Currently only returning 1 resultset as JSON --->
<cfreturn UserOrders>
</cffunction>
首先,我可以从单个方法返回UserOrders
和UserRegions
个结果集吗?
如果这不在CFC中并且在CFM页面内,那么我可以使用#UserOrders.OrderID#
或#UserRegions.UserID#
轻松访问这两个结果。
因为它是从CFC返回的,也是作为JSON数据返回的,我如何实现我想要实现的目标?
答案 0 :(得分:10)
一个函数只能返回一个对象。只需将查询放在另一个对象(如数组或结构)中,然后返回那个对象而不是查询。我会使用一个结构,因为它们比数组更直观。然后在您的JSON中,您可以通过键名访问每个结果集:“orders”或“regions”。我现在无法对此进行测试,但这些内容也是如此:
<cffunction name="OrdersandRegions" returntype="struct" returnformat="JSON">
<cfstoredproc procedure="account_customer_EnrolmentsSEL" ...>
<cfprocresult name = "Local.UserOrders" resultset="1">
<cfprocresult name = "Local.UserRegions" resultset="2">
</cfstoredproc>
<cfset Local.result = {}>
<cfset Local.result["orders"] = Local.UserOrders>
<cfset Local.result["regions"] = Local.UserRegions>
<cfreturn Local.result>
</cffunction>
(旁注,请确保Local / var scope所有函数局部变量。)