如何使用结果集按随机顺序执行实体加载?
所以,如果我entityload("modelName")
,那么如何设置它的排序顺序,以便每次调用它时它会随机变化?
非常感谢
答案 0 :(得分:2)
嗯,简短的回答是使用entityLoad()真的很难。但是,使用HQL,实际上并不是太糟糕。
大多数DB语言都具有随机功能。因此,使用内置的art表和实体,您可以使用ormExecuteQuery来生成结果:
<cfscript>
hql = " SELECT DISTINCT artName
FROM art
ORDER BY RANDOM() ";
results = ormExecuteQuery(hql);
for( art in results ) {
writeOutput(art & "<br/>");
}
</cfscript>
因为它不会返回任何空记录,所以每次都会得到一个随机结果集。
希望这会有所帮助^ __ ^
答案 1 :(得分:0)
我使用的另一种方法是在我的表(和模型)中创建一个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));
}
}