我正在尝试编写一个与cfquery的valuelist()函数一样运行的函数。这是我的代码:
links = entityload('press_releases_lnk',{prp_pr_id=article.getpr_id()});
function ormvaluelist(object,colname){
retrnstr = '';
for(mynum=1;mynum<=arraylen(object);mynum++){
myvalue = object[mynum].getcolname();
retrnstr = retrnstr&myvalue&',';
}
return retrnstr;
}
catlist=ormvaluelist(links,'prp_product_cat');
问题是让“getcolname”使用我传入的变量作为列名。我确信我只是遗漏了一些简单的东西。
由于
答案 0 :(得分:2)
您可以使用ormExecuteQuery("select #column# from #entityName#")
逃脱吗?它将返回一个数组,您可以使用arrayToList()
将数组转换为列表。
请注意,colname
应该是实体中的属性名称。如果您真的想要db中的列名,那么请使用旧的<cfquery>
和valueList()
。
CF10:
myvalue = invoke(object[mynum], "get#colname#");
CF9或更低版本,如果你必须使用cfscript:
myvalue = evaluate("object[mynum].get#colname#()");
来自@PeterBoughton的想法,我之前使用它,它可能对你有用,或者没有,试试吧:
getterFunction = object[mynum]['get#colname#'];
myvalue = getterFunction();
否则,请使用CFML:
<cfinvoke component="#object[mynum]#" method="get#colname#"
returnVariable="myvalue">
别忘了那里的listAppend()
,所以你不必担心返回列表末尾的额外,
。并且变量范围你的变量。