Product-Product.cfc에서 CRUD를 처리하는 간단한 CFC 클래스가 있습니다.CRUD OOP CFC에서 검색어를 어떻게 다시 사용할 수 있습니까?
응용 프로그램을 기반으로 추가 속성을 허용하도록 클래스를 확장합니다. 예를 들어 CartProduct.cfc는 Product.cfc를 확장하여 Quantity 속성을 포함 할 수 있도록합니다. 기본 Product.cfc 클래스에서
, 내가 먼저 ID를 전달하고, 데이터베이스에서 데이터를 검색하기 위해 내 읽기() 메소드의 ID를 사용<cffunction name="read" returntype="Query">
<cfquery name="qData" datasource="mydb">
SELECT description
FROM mySKUTable
WHERE id = '#VARIABLES.Sku#'
</cfquery>
<cfreturn qData />
</cffunction>
<cffunction name="setSku" returntype="Product">
<cfargument name="Sku" type="String" required="true" />
<cfscript>
var qData = QueryNew("");
VARIABLES.Sku = ARGUMENTS.Sku;
qData = read();
VARIABLES.description = qData.description;
</cfscript>
</cffunction>
내가이를 확장 할을 CartProduct.cfc 검색하고 읽기() 메소드를 사용하여 다른 테이블에서 수량을 설정 :이 작업을 수행 할 때, 단지 확장 읽기()
<cffunction name="read" returntype="Query">
<cfquery name="qData" datasource="mydb">
SELECT quantity
FROM myCartTable
WHERE id = '#VARIABLES.Sku#'
</cfquery>
<cfreturn qData />
</cffunction>
<cffunction name="setSku" returntype="Product">
<cfargument name="Sku" type="String" required="true" />
<cfscript>
var qData = QueryNew("");
THIS = SUPER.setSku(Sku);
qData = read();
VARIABLES.quantity = qData.quantity;
</cfscript>
</cffunction>
라고합니다. 괜찮아요, 이것은 설계된 것입니다. 그러나, 나는 둘 다 read() 메소드를 호출하여 기본 클래스의 특성을 먼저 설정 한 다음 확장 클래스의 특성을 설정할 수있는 방법을 찾고 있습니다.
이 문제에 대한 의견이 있으십니까?
p.s. 나는 CFQUERYPARAM을 사용하지 않거나 입력을 검증하지 않는다는 것을 안다. 나는이 단순함을 유지하기 위해 그 쓰레기를 남겨 두었으므로 지금 제안하지 말아라.
이대신 읽기() 메소드에서 쿼리를 반환하는, 내가 구조체에 쿼리 행을 변환하여 구조체를 반환하고 있습니다 :
그래, 그게 내가하려는 일이지만, 먼저 다른 유형으로 변환하지 않고도 여러 쿼리 개체를 쉽게 결합 할 수 없다. 아래에서 구조체를 사용하여 내 대답에 설명했듯이. –