私はDBテーブルをほとんど持っていません.魔女は1つのテーブルからの継承を使用して構築されています魔女は新しいテーブルを作成するための一種の「テンプレート」であり、今では一連のビジネスロジックメソッドがテンプレートから継承された列で機能し、追加の列のみが使用されますモデルのプレゼンテーションのためのパラメーターとして、ロジックには意味がありません。
目標は、すべてのテーブルに沿ってビジネス ロジック メソッドを共有することです。今では、別のクラス ウィッチを追加して CActiveRecord を拡張し、そこからすべてのモデルを拡張するか、ロジックをビヘイビアとしてパックしてモデルに追加することで実行できます。ただし、これには、すべてのテーブル/モデルに対して少なくとも「ダンプ」クラス ファイルを書き込む必要がありますが、それらのテーブルはシステム内で「ライブ」であり、システムのライフ サイクルで削除/作成されます。
パラメータ、テーブル名、またはテーブルのモデルを「オンザフライ」で作成し、それにビジネスロジックを追加する方法として、ある種の「メタモデル」ウィッチを作成する方法はありますか?
私は Yii ユーザー ボードでこの質問をしましたが、何の回答も見つかりませんでした :/ 私はこれをある種のコード チャレンジと考えているので、どんな助けや手がかりも歓迎します :)
[編集]
いくつかのサンプル: さまざまなクライアント デバイスのテーブル
- hfc.cable_modem
- lan.switch_port
- lan.voip_gateway
- (近い将来、システムに追加される「テクノロジー」が増えるため、クライアント デバイス用の新しいテーブルが追加され、それらの一部のサポートが終了する可能性があります)
すべてのテーブルはテンプレート テーブルから継承します client_device ウィッチには次のフィールドがあります。
- クライアントID
- service_id
- core_device_id
- (さらに、created、updated、updater などのタイムスタンプ可能な動作のためのいくつかのメタ列)
ビジネスロジックはIDのみで動作し、すべてのテーブルで同じであることがわかります。残りの列は、デバイスパラメーターのストレージ/プレゼンテーション情報として使用されます。
私の目標は、「メタモデル」クライアント デバイスを用意することです。魔女は、このすべてのテーブルにビジネス ロジックを適用し、すべてのテーブルに対して、モデル クラスを記述することなく、特定のフィールドへのアクセスを提供します (魔女 i'新しいテクノロジーが追加されるか、特定のテクノロジーのサポートが将来廃止されるたびに、毎回行う必要があります)