尝试编写UDF以从ORM对象创建valuelist

时间:2013-03-05 17:29:18

标签: orm coldfusion coldfusion-10

我正在尝试编写一个与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”使用我传入的变量作为列名。我确信我只是遗漏了一些简单的东西。

由于

1 个答案:

答案 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(),所以你不必担心返回列表末尾的额外,。并且变量范围你的变量。

相关问题