1

結果セットがランダムな順序でエンティティロードを行うにはどうすればよいですか?

もしそうならentityload("modelName")、どのようにソート順を設定して、呼び出すたびにランダムに異なるようにしますか?

どうもありがとう

4

2 に答える 2

2

簡単に言えば、entityLoad() では非常に難しいということです。ただし、HQL を使用すると、実際にはそれほど悪くはありません。

ほとんどの DB 言語にはランダム関数があります。したがって、組み込みのアート テーブルとエンティティを使用して、ormExecuteQuery を使用して結果を生成できます。

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

results = ormExecuteQuery(hql);

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

null レコードは返されないため、毎回ランダムな結果セットが得られます。

これが役立つことを願っています^__^

于 2012-05-28T05:44:46.487 に答える
0

私が使用したもう 1 つの方法は、テーブル (およびモデル) に 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 に答える