我正在开发一个多站点系统,它有一个“sitemanager”数据库,然后是每个站点的数据库。
为了决定应该加载的站点数据库以及设置其他一些配置,我已经实现了MY_Controller,以便在我们到达任何主控制器之前从sitemanager数据库加载信息。
我已经设置了几个模型来使用sitemanager数据库,为此我只是简单地包含了
public function __construct()
{
$this->_db_group = 'sitemanager';
parent::__construct();
}
在模型声明的顶部,然后在我的database.php中指定sitemanager设置
当我从标准控制器调用模型时,此方法正常工作,我已经设置了一个登录页面来处理sitemanager数据库中的表,这样可以正常工作,但是,当我尝试使用正在调用的模型时从MY_Controller中的sitemanager数据库它不起作用,并且我得到“表'translation.domains'不存在的错误消息”它很明显地试图加载我的默认数据库而不是sitemanager一个。
谁能告诉我我做错了什么?为什么忽略sitemanager数据库的设置?
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();
}
}
谢谢:)
答案 0 :(得分:0)
我解决了这个问题,以防万一其他人遇到同样的问题。
我将域模型加载回到MY_Controller而不是自动加载它。在我将域模型的负载移动到 公司模型(公司模型使用默认数据库)之后,这仍然无法工作,然后一切正常。