我将如何使用其结果集以随机顺序进行实体加载?
因此,如果我这样做entityload("modelName")
,将如何设置它的排序顺序,以便每次调用它时随机不同?
非常感谢
我将如何使用其结果集以随机顺序进行实体加载?
因此,如果我这样做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));
}
}