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 に答える