2009-11-23 4 views
0

CF9에서 최대 절전 모드 쿼리 언어와 함께 새로운 스크립팅 구문을 사용하여 어떻게 다시 작성할 수 있습니까?ColdFusion9 및 스크립트 구성 요소 및 hql 구문

<cfcomponent output="no"> 
<cffunction name="Login" output="no"> 
    <cfargument name="UsrName"> 
    <cfargument name="UsrPassword"> 

    <cfquery name="local.qry"> 
    SELECT * FROM UsrView 
    WHERE UsrName = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.UsrName#"> 
    AND UsrPassword = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.UsrPassword#"> 
    </cfquery> 
    <cfreturn local.qry> 
</cffunction> 
</cfcomponent> 
+0

왜 최대 절전 모드로보기에서 쿼리하려고합니까? – yfeldblum

+0

모든 조인이있는 뷰를 정의하여 데이터베이스가 과도한 작업을 수행하도록 허용합니다. 그런 다음 tableA join tableB에서 선택하는 대신보기에서 선택합니다. –

답변

2

이게 당신이 무엇입니까?

component{ 
    public query function Login(UsrName,UsrPassword){ 
    // get array of entities matching filter 
    var arrayOfUsers = EntityLoad('User',{ 
     UsrName=arguments.UsrName, UsrPassword=arguments.UsrPassword 
    }); 
    // convert entity array to a query object 
    return EntitytoQuery(arrayOfUsers); 
    } 
} 
+0

와우! 환상적입니다! EntitytoQuery (arrayOfUsers) 대신 arrayOfUsers를 반환해야하는지 궁금합니다. 이것은 처음부터 시작하는 프로젝트이므로 기존 코드 나 방법론을 유지할 필요가 없습니다. 이제 SQL Select 문에서 오는 데이터를 처리하는 더 좋은 방법은 무엇입니까? 그것은 arrayOfUsers, 또는 EntitytoQuery (arrayOfUsers)입니까? –

+0

@cf_PhilipSenn 다릅니다. :) 엔티티에 뷰 레이어가 호출해야 할 수도있는 메소드가 있다면, 사용자 배열을 리턴하십시오. cfselect와 같은 것을 채워야 할 경우 쿼리가 필요합니다. – Henry

+0

@cf_PhilipSenn 그리고 CFQUERY가 EntityToQuery() 또는 HQL보다 더 효율적이라고 생각합니다. – Henry