TP模型能不能支持全局动态数据库

浏览:828 发布日期:2016/04/22 分类:求助交流 关键字: 模型 动态切换数据库
有10个用户,每个用户都要相同的网站(网站结构和数据库结构都一模一样,但是网站数据内容各不相同,删除用户的时候,要能彻底删除该用户下所有数据),我想用一套TP程序,搭配10个相同的数据库,来满足这种需求。(10个用户的网站都在同一个服务器,所以mysql帐号密码都一样,区别只在数据库名称不一样)现在问题是,模型类无法支持动态切换数据库的需求,比如我用user1进入网站,对应的数据库名称是db_user1,用户2进入网站,对应的数据库名称是db_user2。我尝试了几种方案:
1、用户进入网站的时候,在公共Controller和公共Model的构造方法中重新设置C('DB_NAME','db_user'.$uid);但是发现这样没有效果,因为D()方法会从$_model[]中获取已经创建过的模型实例,而如果在每个D()方法后面加D()->db($uid,$conf),则代码改动量非常大。
2、在每个用户Model里面新增protected $dbName='',这个行不通,因为每个用户进来,数据库名称都不一样,无法写到模型字段中。
3、用户Model新增构造函数,在构造函数里面设置$this->dbName='db_user'.$uid,这个方法和方法1是一样的,受$_model[]缓存限制。
4、不用D()方法,直接new()模型,代码改动量也比较大。
5、改造D()方法,使之自动从session加载db_config,并在返回模型实例前执行->db()方法,这个好像也无效。
最佳答案
评论( 相关
后面还有条评论,点击查看>>