2012-01-18 41 views
2

我正在嘗試做一些我認爲是非常基本的工作,但是我無法使其工作。我打電話的EntityLoad這樣的:ColdFusion從EntityLoad在cfscript中的ORM調用方法

<cfscript> 

    transaction { 

     dataLoad = EntityLoad("trans"); 
    } 

</cfscript> 

現在,如果我這樣做,基於標籤的,我可以通過它的循環,並呼籲像這樣的方法:

<cfloop array="#dataLoad#" index="x"> 

    <cfoutput>#x.getCompanyName()#</cfoutput> 

</cfloop> 

但我試圖做到這一點在CFSCRIPT 。我能想到的最接近的是:

<cfscript> 

    for (x=1;x <= ArrayLen(dataLoad);x=x+1){ 

     writeOutPut(dataLoad.companyName());    

    } 

</cfscript> 

我知道cfscript中的for循環與cfloop數組不同。在cfscript中沒有與cfloop數組等價的東西嗎?

如果不能如何從cfscript中調用EntityLoad中的方法?

在此先感謝您的幫助。

+0

下面是2種不同的方式來做到這一點。這兩個我應該知道。我給了Sam的答案,因爲它是最簡單和最少量的代碼。 – Sequenzia 2012-01-18 14:33:12

回答

5
for (var x in dataLoad) { 
x.getCompanyName(); 
} 
+0

謝謝山姆。這很好。我應該知道這一點。 – Sequenzia 2012-01-18 14:31:23

+0

如果你想知道爲什麼它不會在你的CF6/7/8實例上運行,那麼在CF9中使用for(x在數組中)是新的方法 – 2012-01-18 14:47:45

+0

如果你正在使用cfscript事務,可以安全地推測你已經運行了CF9 :) – 2012-01-18 14:48:50

1

替換

writeOutPut(dataLoad.companyName());

writeOutPut(DATALOAD [X] .getCompanyName());

這應該修復錯誤。

+0

感謝Peruz。這工作 – Sequenzia 2012-01-18 14:31:47

1

試試這個:遍歷數組時

<cfscript> 

transaction { 
    dataLoad = entityLoad("trans"); 
} 

for (var i = 1; i <= arrayLen(dataLoad); i++) { 
    writeOutput(dataLoad[i].companyName()); 
} 

</cfscript> 

在CFSCRIPT,你需要指定在每次迭代的索引。

+0

謝謝邁克。這工作 – Sequenzia 2012-01-18 14:31:58

相關問題