3

現在 CF8 を使用しており、ORM 機能にはアクセスできません。しかし、誰かが私が今やっているよりも早くすべての粗雑なアクションを作成する方法についてのヒントを教えてくれることを願っています.

現在、新しいコンポーネントごとに必要な関数を含む cfc を作成し、すべての db フィールド名を各関数にハードコーディングしています。残念ながら、上司はCFWheelsのようなものを使用することを許可しておらず、私たちは永遠に各機能を手動で作成しています.

DB の内容に基づいて自己作成するスクリプトを探しているわけではありません。作成するスクリプトに必要な crud アクションを作成するより迅速な方法です。

以下は、すべてのアプリ用に作成した基本的な関数です。ですから、これらすべてのものをより迅速に作成するためのヒントを誰かが教えてくれることを願っています。

<cfcomponent extends="master.cfc">
    <cffunction name="users" access="public" returntype="query">
    <cfargument name="dsn" type="string" required="yes">
    <cfargument name="id" type="numeric" required="yes">

    <cfquery name="get_users" datasource="#arguments.dsn#">
    SELECT ID,firstname,lastname,email
    FROM users
    WHERE ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.id#">
    </cfquery>

    <cfreturn get_users >
    </cffunction>
</cfcomponent>
4

3 に答える 3

5

CRUDにはDataMgrの方が好きです。多くの CF バージョンおよびデータベース エンジンと互換性があります。cfqueryparam も自動的に適用されます。

DatMgr を使用したクエリの例:

<cfset get_users = Application.DataMgr.getRecords("users", {id: arguments.id})>

これは CFC を置き換えるものではありませんが、同じ入力を節約できる可能性があります。挿入および更新アクションで特に役立つことがわかりました。

于 2013-05-17T04:28:35.293 に答える
3

CFBuilderを試しましたか?

Adobe CFC Generator (ColdFusion Builder 2.0) を使用 -> CFC を作成

http://help.adobe.com/en_US/ColdFusionBuilder/2.0/Using/WS0ef8c004658c1089-1b4fc34c122964e1318-8000.html

私は Woodi を使用したことはありませんが、CF7/8 の時代に Illudium PU-36 Code Generator @ http://cfcgenerator.riaforge.org/を使用したところ、うまく機能しました。

于 2013-05-17T05:31:14.147 に答える
1

一見すると、コードジェネレーターが必要だと思います。ウッディを試してみてください。

また、

たとえば、'user' という名前のテーブルの場合、2 つのコンポーネントを作成します。

  1. ユーザー.cfc
  2. w_user.cfc

ユーザーw_user を拡張します。このように、常にコード ジェネレーター コードを 'w_user' に配置し、コードのカスタマイズはすべて 'user' に配置します。したがって、MODEL オブジェクトは「user.cfc」だけになります。

例:ユーザー レコードの取得

関数に「get_users()」という名前を付けます。これは Woodi で生成できます。したがって、コードは w_user cfc にある必要があります。

フィルターが必要な場合があるかもしれませんが。get_userWithFilter() と呼びましょう。これは「ユーザー」になります。これで、この関数内から「get_users()」関数を参照できます。

フィルタが必要ない場合は、'user.cfc' (継承により利用可能) から get_users() 関数を直接呼び出すことができます。

于 2013-05-17T03:51:14.100 に答える