Несколько баз данных с одним приложением в php и codeigniter - PullRequest
2 голосов
/ 04 мая 2010

Я разработал веб-сайт в php codeigniter с идеей использования одного физического экземпляра кода.

Здесь логика, которой я хотел быть, заключается в том, что на странице входа в систему пользователь выберет companyid, который будет внутри имени базы данных. Я хочу знать, как обновить переменную active_group в соответствии с идентификатором компании, выбранным пользователем во время входа в систему.

Есть ли способ сделать это.

1 Ответ

2 голосов
/ 05 мая 2010

Вам понадобится основная база данных для аутентификации пользователя и хранения информации в любом случае, верно? Так что вам нужно управлять двумя соединениями. Там вы можете установить соединение по умолчанию, а затем установить свою вторую конфигурацию в MY_Controller .

Этот MY_Controller будет обрабатывать обнаружение пользователя (из автоматически загруженного класса базы данных и любой используемой вами системы модель / lib / auth), тогда он, конечно, получит имя базы данных от пользователя, однако оно может быть присоединено. *

Затем вы можете использовать код, подобный этому, чтобы установить 2-й дБ:

class  MY_Controller extends Controller
{
    function MY_Controller ()  {

        parent::Controller();

        $this->user = $this->auth->get_user($this->input->post('username'), $this->input->post('password'));
        $this->company = $this->company->get($this->input->post('company_id'));

        $config['hostname'] = "localhost";
        $config['username'] = "myusername";
        $config['password'] = "mypassword";
        $config['database'] = $this->company->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->company_db = $this->load->database($config, TRUE);
    }

}

Затем вы можете взаимодействовать с $ this-> company_db, а также с $ this-> db. Первый предназначен для взаимодействия с БД с их базой данных, второй - для взаимодействия с основным соединением по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...