MY_Model指定数据库无法从MY_Controller工作

时间:2013-04-16 16:01:49

标签: php codeigniter

我正在开发一个多站点系统,它有一个“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();
    }

}

谢谢:)

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,以防万一其他人遇到同样的问题。

我将域模型加载回到MY_Controller而不是自动加载它。在我将域模型的负载移动到 公司模型(公司模型使用默认数据库)之后,这仍然无法工作,然后一切正常。