Ich habe ein Gateway geschrieben, um eine Ergebnismenge aus meiner Datenbank zu bekommen. Wie speichere ich jede Zeile in einem separaten Dao, so dass ich jeden Datensatz weiter bearbeiten kann? Oder kann ich direkt auf die Ergebnismenge zugreifen, um die Datensätze zu erhalten?Wie Datensätze aus einer Abfrage in DAOs zu setzen?
Das ist mein Gateway (btw, sollte ich die bedingte Logik innerhalb des cfquery in einem separaten cfc schreiben, der dieses erstreckt?)
<cfcomponent name="MaterialDao" hint="data access object" output="false">
<cffunction name="init" hint="constructor" access="public" output="false" returntype="MaterialDao">
<cfargument name="dsn" type="String" required="true" hint="datasource" />
<cfset variables.instance.dsn = arguments.dsn />
<cfreturn this />
</cffunction>
<cffunction name="readMaterial" hint="read" access="public" output="false" returntype="Query">
<cfargument name="district" type="String" />
<cfset var qReadMaterial = "" />
<cfquery name="qReadMaterial" datasource="#variables.instance.dsn#">
<cfif StructKeyExists(arguments,"district")>
SELECT A.NR, A.BEZ, D.BES, D.STA
<cfelse>
SELECT A.NR, A.BEZ
</cfif>
FROM DEK AS D INNER JOIN ART AS A
ON D.NR = A.NR
WHERE 0=0
<cfif StructKeyExists(arguments,"district")>
AND D.BEZ = #arguments.district#
</cfif>
ORDER BY A.BEZ
</cfquery>
<cfreturn qReadMaterial />
</cffunction>
</cfcomponent>
ich schon viele Artikel gelesen haben, und es scheint, dass es sind unterschiedliche Meinungen zu diesem Thema (DAO vs. Gateway, DAO & Gateway etc.). Was ist die beste Vorgehensweise, was machen die Profis?
Ich bemerkte, dass Sie das # -Zeichen in Ihren cfif-Anweisungen verwendet haben. Es ist nicht notwendig, die Zeichen # zu verwenden, außer wenn Sie die Variable als Teil einer Ausgabe verwenden, z. B. für eine Abfrage, eine Sicht oder ein Argument eines Tags, wie Sie es mit dataSource = "# variables.instance.dsn #" getan haben. wo ist es zwischen Anführungszeichen. Nur ein kleiner Tipp, der Sie einige Tastenanschläge des Tippens speichern kann. :) – Jayson
Ich integrierte Aarons Tipp und änderte mein Gateway, um ein Dao zu sein, um mehr in Einklang mit den Profis zu sein :) – mrt181
Sie fehlen die abschließenden Parens auf Ihrem StructKeyExist überprüft. –