“一些常用的功能,如用户管理,评论管理,可以根据模块开发,以便在未来的项目中轻松重用。” - 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。 现在我甚至必须包含Website-和CampaignModule才能使用UserModule!
我还希望在许多项目中更新UserModule,并且可能构建一个包含一些基本模块的框架。
规划这样的架构的正确方法是什么?
答案 0 :(得分:1)
有yii-user module,它们的作用是,它们允许您在模块配置上为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"),
),
...
),
),