cf9 orm entityload以随机顺序排列

时间:2012-05-28 04:09:37

标签: orm coldfusion

如何使用结果集按随机顺序执行实体加载?

所以,如果我entityload("modelName"),那么如何设置它的排序顺序,以便每次调用它时它会随机变化?

非常感谢

2 个答案:

答案 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));        
    }
}