queryEach 或 .each() 在 CF 11 上不工作,为什么?
queryEach or .each() not Working at CF 11, Why?
我正在搜索 google 更好的形式以在 coldfusion 中与 "query" 交互,因为我是公司的新人,我正在工作,我试图从 CF
中获得更多
这是我的尝试:
我的模特:
<cffunction hint="Foo" name="Foo" access="public" returntype="query">
<!--- Argumentos --->
<cfargument hint="Something" name="ArgComBus" type="string" required="no" default="">
<cfargument hint="Other thing" name="ArgPar" type="string" required="no" default="">
<cfscript>
queryService = new Query();
queryService.setSql("
SELECT
column1,
column2,
FROM
tab_bar
WHERE
1=1
#arguments.ArgComBus#
");
queryService.setDataSource(session.Dsn);
if(Len(Trim(arguments.ArgPar))){
Evaluate(arguments.ArgPar);
}
queryResult = queryService.execute();
qBus = queryResult.getResult();
</cfscript>
<cfreturn qBus>
</cffunction>
我的脚本
<cfscript>
arrFoo = arrayNew(1);
qFoo = this.Foo(
ArgComBus = " AND column1 = #variables.bar# ");
// First Attempt - The each method was not found.
qFoo.each(function (foo) {
arrFoo.append(foo);
});
// Second Attempt - Variable QUERYEACH is undefined.
queryEach(qFoo, function (foo) {
arrFoo.append(foo);
});
writeDump(arrFoo);
</cfscript>
我的服务器转储
InstallKit Native Windows
appserver Tomcat
productlevel Developer
productname ColdFusion Server
productversion 11,0,05,293506
rootdir C:\CFusion11\cfusion
我什至在我的查询变量 qFoo
上使用了 getMetaData()
并且 return 那是数组...所以当我尝试使用类似的东西时(试图在查询中转换数组?)
cfQuery = createObject("java", "coldfusion.sql.QueryTable").init(qFoo);
.each()
和 queryEach()
相同的答案...我什至尝试使用 arrayEach()
但 return 对象是 coldfusion.sql.QueryTable
而不是数组
您是 运行 ColdFusion 11。
直到 ColdFusion 2016 才添加 queryEach()
功能:
最初我曾发布过 each()
成员函数在 Adobe ColdFusion 11 中不可用。Aquitaine 在评论中指出它实际上是。 我错误地引用了Lucee 的 Each()
函数,用于处理集合。本题相关的Each()
函数实际上是ArrayEach()
标签函数的脚本版本。它在 ColdFusion 11 中可用(它实际上是在 ColdFusion 10 中添加的)。抱歉造成混淆。
文档可能有误。除了在 ColdFusion 2018 下,我无法让该功能作为 Each()
工作。对于 ColdFusion 11,我只能让它作为 ArrayEach()
.
工作
这里有几个关于如何在 ColdFusion 11 中循环查询的例子(借用自 cfdocs):
// Define our query
platform = ["Adobe ColdFusion", "Railo", "Lucee"];
myQuery = queryNew(" ");
queryAddColumn(myQuery, "platform", "CF_SQL_VARCHAR", platform);
// By row index
for (i = 1; i <= myQuery.recordCount; i++) {
writeOutput("<li>#myQuery["platform"][i]#</li>");
}
// By query
for (row in myQuery) {
writeOutput("<li>#row.platform#</li>");
}
// By arrayeach
writeOutput("<h3>By arrayeach:</h3>");
function printArray(vendor, index)
{
writeOutput("<li>#vendor#</li>");
}
arrayEach(platform,printArray);
我在 TryCF.com 上为您创建了一个要点,这样您就可以看到这段代码的运行情况,如果您愿意,可以尝试一下。 Just click here to run the code.
我正在搜索 google 更好的形式以在 coldfusion 中与 "query" 交互,因为我是公司的新人,我正在工作,我试图从 CF
中获得更多这是我的尝试:
我的模特:
<cffunction hint="Foo" name="Foo" access="public" returntype="query">
<!--- Argumentos --->
<cfargument hint="Something" name="ArgComBus" type="string" required="no" default="">
<cfargument hint="Other thing" name="ArgPar" type="string" required="no" default="">
<cfscript>
queryService = new Query();
queryService.setSql("
SELECT
column1,
column2,
FROM
tab_bar
WHERE
1=1
#arguments.ArgComBus#
");
queryService.setDataSource(session.Dsn);
if(Len(Trim(arguments.ArgPar))){
Evaluate(arguments.ArgPar);
}
queryResult = queryService.execute();
qBus = queryResult.getResult();
</cfscript>
<cfreturn qBus>
</cffunction>
我的脚本
<cfscript>
arrFoo = arrayNew(1);
qFoo = this.Foo(
ArgComBus = " AND column1 = #variables.bar# ");
// First Attempt - The each method was not found.
qFoo.each(function (foo) {
arrFoo.append(foo);
});
// Second Attempt - Variable QUERYEACH is undefined.
queryEach(qFoo, function (foo) {
arrFoo.append(foo);
});
writeDump(arrFoo);
</cfscript>
我的服务器转储
InstallKit Native Windows
appserver Tomcat
productlevel Developer
productname ColdFusion Server
productversion 11,0,05,293506
rootdir C:\CFusion11\cfusion
我什至在我的查询变量 qFoo
上使用了 getMetaData()
并且 return 那是数组...所以当我尝试使用类似的东西时(试图在查询中转换数组?)
cfQuery = createObject("java", "coldfusion.sql.QueryTable").init(qFoo);
.each()
和 queryEach()
相同的答案...我什至尝试使用 arrayEach()
但 return 对象是 coldfusion.sql.QueryTable
而不是数组
您是 运行 ColdFusion 11。
直到 ColdFusion 2016 才添加 queryEach()
功能:
最初我曾发布过 each()
成员函数在 Adobe ColdFusion 11 中不可用。Aquitaine 在评论中指出它实际上是。 我错误地引用了Lucee 的 Each()
函数,用于处理集合。本题相关的Each()
函数实际上是ArrayEach()
标签函数的脚本版本。它在 ColdFusion 11 中可用(它实际上是在 ColdFusion 10 中添加的)。抱歉造成混淆。
文档可能有误。除了在 ColdFusion 2018 下,我无法让该功能作为 Each()
工作。对于 ColdFusion 11,我只能让它作为 ArrayEach()
.
这里有几个关于如何在 ColdFusion 11 中循环查询的例子(借用自 cfdocs):
// Define our query
platform = ["Adobe ColdFusion", "Railo", "Lucee"];
myQuery = queryNew(" ");
queryAddColumn(myQuery, "platform", "CF_SQL_VARCHAR", platform);
// By row index
for (i = 1; i <= myQuery.recordCount; i++) {
writeOutput("<li>#myQuery["platform"][i]#</li>");
}
// By query
for (row in myQuery) {
writeOutput("<li>#row.platform#</li>");
}
// By arrayeach
writeOutput("<h3>By arrayeach:</h3>");
function printArray(vendor, index)
{
writeOutput("<li>#vendor#</li>");
}
arrayEach(platform,printArray);
我在 TryCF.com 上为您创建了一个要点,这样您就可以看到这段代码的运行情况,如果您愿意,可以尝试一下。 Just click here to run the code.