0

我正在尝试编写一个函数,它将像 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”使用我传入的变量作为列名。我确定我只是缺少一些简单的东西。

谢谢

4

1 回答 1

2

你能逃脱使用ormExecuteQuery("select #column# from #entityName#")吗?它将返回一个数组,您可以使用arrayToList().

请注意,这colname实际上应该是实体中的属性名称。如果您真的是指 db 中的列名,请使用旧的<cfquery>, 和valueList().

CF10:

myvalue = invoke(object[mynum], "get#colname#");

如果必须使用 cfscript,请使用 CF9 或以下版本:

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(),因此您不必担心,退货清单末尾的额外内容。和 var 作用域你的变量。

于 2013-03-05T17:57:20.273 回答