1

我将如何使用其结果集以随机顺序进行实体加载?

因此,如果我这样做entityload("modelName"),将如何设置它的排序顺序,以便每次调用它时随机不同?

非常感谢

4

2 回答 2

2

好吧,简短的回答是 entityLoad() 真的很难。但是,使用 HQL,它实际上并不算太糟糕。

大多数数据库语言都有随机函数。因此,使用内置的艺术表和实体,您可以使用 ormExecuteQuery 生成结果:

<cfscript>
hql = " SELECT DISTINCT artName
        FROM art
        ORDER BY RANDOM() ";

results = ormExecuteQuery(hql);

for( art in results ) {
    writeOutput(art & "<br/>");
}
</cfscript>

因为它不会返回任何空记录,所以每次都会得到一个随机结果集。

希望这会有所帮助^__^

于 2012-05-28T05:44:46.487 回答
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));        
    }
}
于 2012-06-05T01:39:58.797 回答