0

我正在开发一个多站点系统,该系统具有“站点管理器”数据库,然后是每个站点的数据库。

为了决定应该加载的站点数据库以及设置一些其他配置内容,我已经实现了 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();
    }

}

谢谢 :)

4

1 回答 1

0

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

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

于 2013-04-17T09:00:39.440 回答