我正在开发一个多站点系统,该系统具有“站点管理器”数据库,然后是每个站点的数据库。
为了决定应该加载的站点数据库以及设置一些其他配置内容,我已经实现了 MY_Controller 以在我们到达任何主控制器之前从站点管理器数据库加载信息。
我已经设置了几个模型来使用 sitemanager 数据库,为此我简单地包括了
public function __construct()
{
$this->_db_group = 'sitemanager';
parent::__construct();
}
在模型声明的顶部,然后在我的 database.php 中指定站点管理器设置
当我从标准控制器调用模型时,此方法工作正常,我已经设置了一个登录页面来处理 sitemanager 数据库中的一个表,这工作正常,但是,当我尝试使用调用 sitemanager 数据库的模型时从 MY_Controller 中它不起作用,并且我收到“表 'translation.domains' 不存在”的错误消息,这很明显是在尝试加载我的默认数据库而不是站点管理器。
谁能告诉我我做错了什么?为什么站点管理器数据库的设置被忽略?
MY_Controller.php 看起来像这样:
<?php
class MY_Controller extends CI_Controller {
function MY_Controller() {
parent::__construct();
$this->load->model('company_model');
// Get domain and load info from database
$domain_info = $this->domain_model->get_by(array('domain' => $_SERVER['HTTP_HOST']));
// Company info
$company_info = $this->company_model->get($domain_info->company_id);
// Set global variables
define('GLOBAL_COMPANY_ID',$company_info->id);
define('GLOBAL_COMPANY_NAME',$company_info->name);
}
}
域模型如下所示:
class Domain_model extends MY_Model {
public function __construct()
{
$this->_db_group = 'sitemanager';
parent::__construct();
}
}
谢谢 :)