Are you certain that the settings for 'testcases' are correct? Did you by any chance name the database 'testcases' instead of 'db_testcases'?
On Wed, Oct 14, 2009 at 6:24 AM, Christian <christian.lusz...@gmail.com> wrote: > > Hello, > > I read several threads about this but not found a final "cake-like" > solution. A lot of posts are about switching based on URLs, but I need > to switch to another "testcases" database connection based on a > session value I set in an action. This "testcases" connection should > be used until end of the session/logout. > > I read about modifying database.php adding function __construct() and > switching the default connection there, but how can I access the cake > session there - I assume the cake core isn't fully initialized at that > construct point and I cannot use the session component there. > > > My setup: > - In database.php I created two items: $default and $testcases (only > difference: database name and content of course) > - In a controller action I am saving a session value which database > connection to use > > > Try 1) I tried to set in app_controller.php/beforeFilter() the model > var useDbConfig to switch the database. But after the normal action > and find('all) I get a SQL error (no database selected) whereas my > debug calls tell me that the model has switched to the "testcases" > database config correctly (or not?). > > function beforeFilter() { > if ($this->Session->read('tmp.dbconfig') && is_object($this-> > {$this->modelClass})) { > /* debugging */ $db = $this->{$this->modelClass}- >>getDataSource(); debug($db->config); > $this->{$this->modelClass}->useDbConfig = 'testcases'; > /* debugging */ $db = $this->{$this->modelClass}- >>getDataSource(); debug($db->config); > } > ... > } > Warning (512): SQL Error: 1046: No database selected [CORE\cake\libs > \model\datasources\dbo_source.php, line 525] > > > Try 2) I tried to use the ConnectionManager method in the > app_controller.php/beforeFilter(), but had no real success ... I do > not really know what to do! From another thread I tried the following > but same error > > function beforeFilter() { > if ($this->Session->read('tmp.dbconfig') && is_object($this-> > {$this->modelClass})) { > /* debugging */ $_db = $this->{$this->modelClass}- >>getDataSource(); debug($_db->config); > $db =& ConnectionManager::getDataSource('default'); > $db->disconnect(); > $db->config['database'] = 'db_testcases'; > $db->connect(); > /* debugging */ $_db = $this->{$this->modelClass}- >>getDataSource(); debug($_db->config); > } > ... > } > Warning (512): SQL Error: 1046: No database selected [CORE\cake\libs > \model\datasources\dbo_source.php, line 525] > > > > So, what is the best practice to switch database connections > dynamically by session content? > In controller, model, or??? > > > I am very thankful for any positive answer! > > Christian > > ps. talking about cake 1.2.5 > my references: searched for "usedbconfig session" > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---