Yii Framework Forum: 使用多个相同配置的Cdbconnection访问同一个数据库是否会有问题? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

使用多个相同配置的Cdbconnection访问同一个数据库是否会有问题? Rate Topic: -----

#1 User is offline   jarlyyn 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 01-November 12

Posted 27 November 2013 - 07:03 AM

要做个功能,根据域名不同访问,对不同的模块设置不同的table_prefix(在做多语言版本的时候,cms模块要根据语言版本不同切换数据,admin,user,mail,fileserver等模块不动。)。
爬了下CActiveRecord,CDbConnection,CDBscheme的代码,发现方法有几个。
1.把每个model的getTableName重写一下。这个对我而言觉得太丑了。
2.继承并重写CActiveRecord的两个与tablename相关的代码。依然绝对太丑,特别是构建函数 __construct。
3.重置getDbConnection,根据不同模块去的不同的DbConnection。

感觉3相对最靠谱些。
但是看DbConection里,每个实例都封装了一个pdo实例。

那是否会在多个Dbconection操作数据库的时候出问题呢?
0

#2 User is offline   yiqing95 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 594
  • Joined: 27-December 10
  • Location:china

Posted 27 November 2013 - 10:07 AM

如果模块边界十分清晰 并且不存在跨模块操作(从不同的模块里调用另一个模块的某个模型) 表前缀 可以在xxxModule 的init方法中重写下 Yii::app()->db->tablePrefix = 'anotherPrefix';
tablePrefix
0

#3 User is offline   jarlyyn 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 01-November 12

Posted 27 November 2013 - 09:03 PM

下载init里肯定不行。
我每个模块下的helper/model都会有个getModule方法,自动载入模块的。
想了下,这样做是有问题的。
因为存在跨模块的关系
比如 cms对应的作者。
所以还是只能在tablename里动脑筋了
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users