Php ve CodeIgniter'daki tek bir uygulama ile birden fazla veritabanı

1 Cevap php

Ben kod tek bir fiziksel örneğini kullanma fikri ile php CodeIgniter'daki bir web sitesi geliştirildi ettik.

Here the logic i wanted to be is on login page user will chose the companyid which will be internally to the database name. I want to know how to update the active_group variable according to the company id chosen by the user at the time of login.

Bunu yapmak için herhangi bir yolu var mı.

1 Cevap

Siz kullanıcı kimlik doğrulama ve yine sağ bilgi depolamak için bir ana veritabanı olması gerekir? Yani iki bağlantılarını yönetmek gerekir. Daha sonra MY_Controller daki 2 set config, orada varsayılan bağlantısı olabilir.

Bu MY_Controller sonra elbette kullanıcıdan veritabanı adını almak istiyorum ancak bağlı olabilir kullanıcı (otomatik yüklenen veritabanı sınıfı ve ne olursa olsun kullandığınız model / lib / auth sistemi) algılamasını ele olacaktır.

Daha sonra 2 db ayarlamak için bu gibi bir kod kullanabilirsiniz:

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);
    }

}

Daha sonra $ this-> company_db yanı sıra $ this-> db ile etkileşime girebilir. Birinci grup, veri tabanı, ana varsayılan bağlantısı ile etkileşim için ikinci olmak ile db etkileşimleri için olacaktır.