我决定将两个相关wbsits A,B
的表合并到一个数据库中,这样他们就可以共享一些表
我已经为网站B_
的表添加了前缀B
,所以我可以将它们与表A区别开来,避免名称相似的表之间发生冲突
所以我现在有两个选择:
1 - 更改网站B
的源代码中的每个表名称,并为其添加B_
前缀...这将花费很长时间
2 - 在config / database.php中使用前缀选项...我将使用
但问题在于:
有两个网站共享的3个表,它们没有任何前缀
1 - users
2 - tractions
3 - sessions
所以我想做的就是在这3张表的前缀中进行exepction
基本上在我希望拥有的网站B的config / database.php中
$db['default'] = array(
'dbprefix' => 'B_',
);
但有些我想为3个表制作例如:
$exception = array('users' , 'tractions' , 'sessions' );
if(in_array($table_name , $exception )
$db['default']['dbprefix'] = '';
这是可疑的,但我不知道在哪里以及如何
答案 0 :(得分:0)
更好的方法是为前缀为B_的所有3个表创建视图,这样您就不需要在代码中出现任何异常。
插入查询也可以正常运行,因为您只能通过视图更新一个表。
示例:
CREATE VIEW B_users as SELECT * FROM users;
现在,在CodeIgniter中,可以通过视图访问users表,并且可以正常工作。
答案 1 :(得分:0)
在查询使用$this->db->dbprefix
之前,它非常简单,它可以被覆盖
$ this-> db-> dbprefix =''; 我已经习惯了它对我来说很好用
示例
public function table_update($data,$id)
{
$this->db->dbprefix = '';
$this->db->update('users', $data, array('id' => $id));
return $this->db->affected_rows();
}
你可以检查一下吗
https://ellislab.com/codeigniter/user-guide/database/queries.html
注意:在你的构造函数中也调用你的dbprefix,在那个时候不需要在dbprefix之前调用任何查询。确定你使用有任何前缀表的模型不要像这样跟着
公共职能__construct() {
parent::__construct();
$this->db->dbprefix = '';
}