我有一個簡單的CFC類來處理Product - Product.cfc上的CRUD。如何在CRUD OOP CFC中重新使用查詢?
我在擴展該類以允許基於應用程序的其他屬性 - 例如CartProduct.cfc擴展Product.cfc以允許包含數量屬性。
在Base Product.cfc類,我首先通過在一個ID,並使用該ID在我read()方法來從數據庫中檢索數據:
<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檢索和使用read()方法從不同的表中設置的數量:
<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或驗證我的輸入等等。爲了保持這個簡單,我留下了那些垃圾,所以請不要給我這些建議。
是的,那正是我想要做的,但是如果不先將它們轉換爲另一種類型,就不能輕鬆地組合多個查詢對象,就像我在下面的答案中使用Structs所做的那樣。 – 2012-07-30 19:21:43