0

「ユーザー管理、コメント管理などの一般的に使用される機能の一部は、将来のプロジェクトで簡単に再利用できるように、モジュールの観点から開発される可能性があります。」- http://www.yiiframework.com/doc/guide/1.1/en/basics.module

ユーザーを必要とするプロジェクトがたくさんあります。毎回まったく同じデータベース構造と機能。登録、ログイン、ログアウトなど。Yii はモジュールを再利用できると教えてくれます。クール...始めましょう:

ユーザー、キャンペーン、ウェブサイトの 3 つの部分があります。

このプロジェクトでは、CampaignModule は UserModule (campaign_user [user_id, Campaign_id]) と関係があります。

WebsiteModule は、CampaignModule および UserModule と関係があります。

登録、ログイン、編集などの機能を使用して、他のプロジェクトで UserModule を再利用したいと考えています。

実際の状況: gii でモデルを作成した後、すべてのモデルがモジュール間で関係と依存関係を持ちます。例えば

UserModule: 'campaigns' => array(self::HAS_MANY, 'Campaign', 'user_id'),

WebsiteModule を使用するには、User- および CampaignModule を含める必要があります。UserModule を使用するには、Website- と CampaignModule を含める必要があります。

また、多くのプロジェクトで UserModule を更新し、いくつかの基本的なモジュールでフレームワークを構築したいと考えています。

このようなアーキテクチャを計画する正しい方法は何ですか?

4

1 に答える 1

1

yii-user モジュールがあり、モジュール構成で User モデルに追加のリレーションを指定できるようにします。

/**
 * @return array relational rules.
 */
public function relations()
{
    $relations = Yii::app()->getModule('user')->relations;
    if (!isset($relations['profile']))
        $relations['profile'] = array(self::HAS_ONE, 'Profile', 'user_id');
    return $relations;
}

したがって、次のようなことができます。

'modules'=>array(
    'user' => array(
            ...
            'relations' => array(
              'categories' => array(CActiveRecord::HAS_MANY, 'Category', "user_id"),
              'account' => array(CActiveRecord::HAS_ONE, 'Account', "user_id"),
            ),
            ...
        ),
  ),
于 2013-01-23T20:57:05.690 に答える