我該如何做一個entityload,其結果集是隨機順序的?cf9 orm entityload隨機順序
所以,如果我做entityload("modelName")
,它將如何設置它的排序順序,使它每次我打電話時都是隨機的不同的?
很多謝謝
我該如何做一個entityload,其結果集是隨機順序的?cf9 orm entityload隨機順序
所以,如果我做entityload("modelName")
,它將如何設置它的排序順序,使它每次我打電話時都是隨機的不同的?
很多謝謝
那麼,簡單的答案是它真的很難與entityLoad()。但是,對於HQL,實際上並不算太壞。
大多數數據庫語言都會有一個隨機函數。因此,使用內置的藝術表和實體,你可以使用ormExecuteQuery生成結果:
<cfscript>
hql = " SELECT DISTINCT artName
FROM art
ORDER BY RANDOM() ";
results = ormExecuteQuery(hql);
for(art in results) {
writeOutput(art & "<br/>");
}
</cfscript>
因爲它不會返回任何空的記錄,你會得到一個隨機的結果集每次。
希望這有助於^ __^
我用另一種方法是在我的表(和型號)和隨機填充它的功能來創建中將sortOrder列。可能不如jCaito的選擇那樣高效,但有一些好處。
public function getRandom(){
randomizer();
return entityload("provider", {}, "sortOrder");
}
private void function randomizer(){
source = entityload("provider");
for(i=1;i<=ArrayLen(source);i++){
source[i].setSortOrder(randRange(1,999));
}
}
我可能會建議改變你的範圍爲'randRange(1,source.len())',這樣它會在數組的長度內進行排序 –
很好的答案。正如你所說的功能將取決於你的數據庫。在MySQL中,它是RAND()而不是RANDOM() – CfSimplicity
謝謝jcaito ..這工作的一種享受..唯一的問題是,我沒有讓我的setter和getters回來..數據剛剛回來作爲數組或數組(?) 。我還用另一種方法給了我一個完整的實體,包括所有的getter和setter,都會作爲備選答案發布。再次感謝! – Jason