Codeigniter数据库 - 自动选择

时间:2011-10-24 20:11:27

标签: codeigniter

我正在开发一个多租户应用程序,我几乎就在那里。

目前我每个客户使用一个数据库 - 每次复制并根据$ _SERVER ['http_host']命名...

每个数据库的许多表都不会更改,并且包含相同的信息。

我希望有一个包含此信息的主应用程序数据库,包括客户端列表以及调用数据库的内容。然后,该数据库将用于选择正确的客户数据库...

这是否可行,是否有人能指出我适合教程的方向?

由于

1 个答案:

答案 0 :(得分:1)

好的,因此您需要为“管理”数据库和“客户”数据库配置不同的数据库配置。

使用此页面中的示例生成这些单独的配置:

http://ellislab.com/codeigniter/user_guide/database/configuration.html

然后,在您的主控制器中(请告诉我您扩展MY_Controller.php而不仅仅是使用CI_Controller.php),您将需要阅读“管理员”数据库并获取所有客户端信息。然后,您需要为此客户端数据库生成$config数组,并使用新的$config数组重新加载数据库:

// in MY_Controller constructor

// do your thing here to connect to the admin database and get client details
// ...
//

$config['hostname'] = "localhost";
$config['username'] = $client_db_username; // you got this from the 'admin' database
$config['password'] = $client_db_password; // you got this from the 'admin' database
$config['database'] = $client_db_name; // you got this from the 'admin' database
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";

$this->load->database($config);

然后您将与客户端数据库建立连接。

注意 如果您需要来回连接两个数据库,那么您可以按照此页面上的说明连接到多个数据库:http://ellislab.com/codeigniter/user_guide/database/connecting.html