2012-05-28 2 views
1

임의 순서로 결과 집합을 사용하여 엔티티로드를 수행하는 방법은 무엇입니까?임의의 순서로 cf9 orm entityload

따라서 entityload("modelName")을 수행하는 경우 어떻게 호출 할 때마다 순서가 임의로 달라 지도록 정렬 순서를 설정하겠습니까?

많은 감사합니다.

답변

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 레코드를 반환하지 않습니다 때문에, 당신은 모든 시간을 설정 임의의 결과를 얻을 수 있습니다.

희망이 도움이^__^

내가 사용하는 또 다른 방법은 내 테이블 (모델)과 무작위로 채 웁니다하는 기능에있는 sortOrder 열을 만드는 것입니다
+0

당신이 말했듯이이 함수는 당신의 DB에 달려 있습니다. MySQL에서는 RANDOM() 대신 RANDOM()을 사용합니다. – CfSimplicity

+0

jcaito .. 감사합니다. .. 문제는 단지 setter 및 getters를 얻지 못했다는 것입니다. 데이터가 배열 또는 배열로 돌아 왔습니다. . 나 또한 모든 게터와 세터를 포함한 나에게 완전한 엔티티를 돌려 준 또 다른 접근법을 사용하여 대안 답으로 게시 할 것이다. 다시 한 번 감사드립니다! – Jason

0

. 아마도 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));   
    } 
} 
+0

범위를'randRange (1, source.len())'로 변경하면 배열 길이 내에서 정렬됩니다. –

관련 문제