要做个功能,根据域名不同访问,对不同的模块设置不同的table_prefix(在做多语言版本的时候,cms模块要根据语言版本不同切换数据,admin,user,mail,fileserver等模块不动。)。
爬了下CActiveRecord,CDbConnection,CDBscheme的代码,发现方法有几个。
1.把每个model的getTableName重写一下。这个对我而言觉得太丑了。
2.继承并重写CActiveRecord的两个与tablename相关的代码。依然绝对太丑,特别是构建函数 __construct。
3.重置getDbConnection,根据不同模块去的不同的DbConnection。
感觉3相对最靠谱些。
但是看DbConection里,每个实例都封装了一个pdo实例。
那是否会在多个Dbconection操作数据库的时候出问题呢?