Welcome Guest, Not a member yet? Register   Sign In
$this->load->database() not working
#1

[eluser]Zeff[/eluser]
Hi all,

In a project, I use several models, using different databases. In the constructor of the model, I use
Code:
public function __construct()
    {
        // Call the Model constructor
        parent::__construct();
        
        $this->load->database('users');
    }

But when I try to run a query in this loaded database, I got an error such as 'myapp.userstable does not exist', so the users db configuration is not loaded...
Query example (the model method):
Code:
public function get_user_cn($uid='')
    {
        if($uid != '')
        {
            $this->db->where('uid', $uid);
            $query = $this->db->get('userstable');
                        
            if ($query->num_rows() == 1)
            {
                $row = $query->row_array();
                return $row['cn'];
            }
        }
        return null;
    }

In my database.php (in \application\config\) I have two configurations:
Code:
$active_group = 'default';
$active_record = TRUE;

/* Default database: myapp */
$db['default']['hostname'] = 'myserver';
$db['default']['username'] = 'dbuser';
$db['default']['password'] = 'dbpw';
$db['default']['database'] = 'myapp';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

/* Users database configuration */
$db['users']['hostname'] = 'myserver';
$db['users']['username'] = 'dbuser';
$db['users']['password'] = 'dbpw';
$db['users']['database'] = 'users';
$db['users']['dbdriver'] = 'mysql';
$db['users']['dbprefix'] = '';
$db['users']['pconnect'] = TRUE;
$db['users']['db_debug'] = TRUE;
$db['users']['cache_on'] = FALSE;
$db['users']['cachedir'] = '';
$db['users']['char_set'] = 'utf8';
$db['users']['dbcollat'] = 'utf8_general_ci';
$db['users']['swap_pre'] = '';
$db['users']['autoinit'] = TRUE;
$db['users']['stricton'] = FALSE;

Thanks in advance for your help!
#2

[eluser]TheFuzzy0ne[/eluser]
If you want to connect to multiple databases, you'll need to store a reference to the object for that database.


Code:
$this->user_db =& $this->load->database('users', TRUE);

You should then be able to access that from within your model (by using $this->user_db->whatever()). If not, you'll need to inject it.
#3

[eluser]Zeff[/eluser]
Thanks TheFuzzyOne,

I found a related post from 2009 (mysql bug...) and figured it out. Very important to return the resource by adding TRUE :-)

Best Regards,

Zeff




Theme © iAndrew 2016 - Forum software by © MyBB