我决定把两个相关的网站A,B
的表合并到一个数据库中,这样他们就可以共享一些表
我在B
网站的表中添加了前缀B_
,这样我就可以将它们与表A区分开来,避免类似名称的表之间的任何冲突
所以我现在有两个选项:
1 -更改B
网站源代码中的每个表名,并添加B_
前缀。这需要很长时间
2 -在config/database.php中使用前缀选项我将使用
但问题是:
有三个表格是由两个网站共享的,它们没有任何前缀
1 - users
2 - tractions
3 - sessions
那么我要做的就是在前缀中为这3个表设置异常
基本上在配置/数据库。php网站B我想有
$db['default'] = array(
'dbprefix' => 'B_',
);
但是我想为3个表设置例外,比如:
$exception = array('users' , 'tractions' , 'sessions' );
if(in_array($table_name , $exception )
$db['default']['dbprefix'] = '';
这可能是可行的,但我不知道在哪里和如何
这是非常简单的,就在你查询使用$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 in到你的构造函数也在那个时候不需要调用查询之前dbprefix .确保你使用的模型有任何前缀表不要像这样
公共函数__construct(){
parent::__construct();
$this->db->dbprefix = '';
}
更好的方法是为所有3个表创建带有前缀B_的视图,这样您就不需要在代码中出现任何异常。
插入查询也将没有任何问题,因为您将通过视图只更新一个表。
的例子:
CREATE VIEW B_users as SELECT * FROM users;
所以现在在CodeIgniter中,用户表是通过视图访问的,并且没有任何问题。