Welcome Guest, Not a member yet? Register   Sign In
Multiple databases and db_params with Datamapper
#1

[eluser]Kh3ops[/eluser]
Hello everyone,

After browsing the forum for some time, I can't find the answer to my issue.

I'm using Datamapper ORM (1.8.2) and trying to make a specific model connect to another database :

Code:
<?php
class Zone extends DataMapper {


/**
  * override the database connections with this option
  */

var $db_params = 'dns';
  
    public function __construct()
    {
        // model constructor
        parent::__construct();
    }
}
?>

According to documentation, this is supposed to make model connect the the dabase described as "dns" in config/database.php.

Code:
// Secondary database
$db['dns']['hostname'] = '*****';
$db['dns']['username'] = '*****';
$db['dns']['password'] = '*****';
$db['dns']['database'] = '*****';
$db['dns']['dbdriver'] = 'mysql';
$db['dns']['dbprefix'] = '';
$db['dns']['pconnect'] = FALSE;
$db['dns']['db_debug'] = TRUE;
$db['dns']['cache_on'] = FALSE;
$db['dns']['cachedir'] = '';
$db['dns']['char_set'] = 'utf8';
$db['dns']['dbcollat'] = 'utf8_general_ci';
$db['dns']['swap_pre'] = '';
$db['dns']['autoinit'] = TRUE;
$db['dns']['stricton'] = FALSE;

Except it doesn't...

When displaying object details in controller :

Code:
$zone = new zone();

I get a MySQL error showing the default database and not the database specified in "dns" configuration.

Code debug shows that db_params is not set on my object despite my declaration.

Quote:Zone Object ( [db_params] => [error] => [stored] => [prefix] => [join_prefix] => [table] => zones [model] => zone [primary_key] => id [error_prefix] =>

Any idea?

Thanks,
#2

[eluser]Kh3ops[/eluser]
UP!
#3

[eluser]WanWizard[/eluser]
The 1.8.2 release had an issue where model property overrides didn't always work. This is fixed in 1.8.2.1.

Get the latest datamapper library from http://bitbucket.org/wanwizard/datamapper
#4

[eluser]Kh3ops[/eluser]
I'll try this out right away ! Thanks
#5

[eluser]Kh3ops[/eluser]
You were right WanWizard. Ugprading Datamapper did the trick.

Many thanks :-)
#6

[eluser]xylude[/eluser]
I hate to bump an old topic like this, but I am having the same exact problem. I've downloaded the latest DM from Bitbucket and still cannot get my DM to connect to multiple databases.

Here is my 'database.php' file:

http://pastie.org/5388841

And my model:

Code:
class Module extends DataMapper {
    public $db_params = 'ohm';
    public $has_one = array();
    public $has_many = array();
}

When I try and run it I get the following error:

Error Number: 1146
Table 'db1.modules' doesn't exist

Please help, I've tried everything I can think of.
#7

[eluser]WanWizard[/eluser]
Can you add a constructor you your model, have it call the parent constructor, and after that, do a var_dump($this->db_params)?




Theme © iAndrew 2016 - Forum software by © MyBB