what is returned if you call $this->Captchas->defaultConnectionName() ?
On Sunday, July 20, 2014 6:29:33 PM UTC+2, Joe Theuerkauf wrote: > > i tried this topic before, but the only response was for an older version > of Cake... > > i'm following this documentation: > > http://book.cakephp.org/3.0/en/orm/table-objects.html#configuring-connections > > i'm trying to keep a few tables that would be application-agnostic in a > different database. i'm not trying to create associations as mentioned in > #3463. i just need to query independent records from these tables. > > Here's what i have so far: > // Config/app.php > $config = [ > // ... > 'Datasources' => [ > 'default' => [ > // Connection to this DB works. > 'database' => 'kodiak', > ], > 'websites' => [ > // Connection is identical, except different 'database' value > 'database' => 'websites', > ] > ] > // ... > ]; > > // Model/Table/Websites/CapchasTable.php > class CaptchasTable extends Table { > public static function defaultConnectionName () { > return 'websites'; > } > } > > // Controller/ContactsController.php > public function index () { > $this->loadModel('Captchas'); > > $captcha = $this->Captchas->find('all', [ > 'conditions' => [], > 'order' => 'RAND()', > 'limit' => 1 > ]); > > // etc. > } > > Here's the error output: > > SQLSTATE[42S02]: Base table or view not found: 1146 Table > *'kodiak.captchas'* doesn't exist > > Error: An Internal Error Has Occurred. > Stack Trace > > ROOT\vendor\cakephp\cakephp\src\Database\Schema\Collection.php line > 113 → Cake\Database\Schema\Collection->_executeSql(string, array) > ROOT\vendor\cakephp\cakephp\src\ORM\Table.php line 323 → > Cake\Database\Schema\Collection->describe(string) > ROOT\vendor\cakephp\cakephp\src\ORM\Query.php line 127 → > Cake\ORM\Table->schema() > ROOT\vendor\cakephp\cakephp\src\ORM\Query.php line 110 → > Cake\ORM\Query->addDefaultTypes(Cake\ORM\Table) > ROOT\vendor\cakephp\cakephp\src\ORM\Table.php line 927 → > Cake\ORM\Query->__construct(Cake\Database\Connection, Cake\ORM\Table) > ROOT\vendor\cakephp\cakephp\src\ORM\Table.php line 724 → > Cake\ORM\Table->query() > APP/Controller\ContactsController.php line 36 → > Cake\ORM\Table->find(string, array) > [internal function] → App\Controller\ContactsController->index() > ROOT\vendor\cakephp\cakephp\src\Controller\Controller.php line 373 → > ReflectionMethod->invokeArgs(App\Controller\ContactsController, array) > ROOT\vendor\cakephp\cakephp\src\Routing\Dispatcher.php line 115 → > Cake\Controller\Controller->invokeAction() > ROOT\vendor\cakephp\cakephp\src\Routing\Dispatcher.php line 87 → > Cake\Routing\Dispatcher->_invoke(App\Controller\ContactsController) > ROOT\webroot\index.php line 37 → > Cake\Routing\Dispatcher->dispatch(Cake\Network\Request, > Cake\Network\Response) > > It doesn't seem to matter if CaptchasTable is in Model/Table or > Model/Table/Websites; loadModel('Captchas') doesn't throw errors either > way. But the find() call is throwing the error - *regardless where * > CaptchasTable* is placed*. When it's commented, the page loads fine > (since i'm hitting this error, i haven't actually tried to USE any of the > Captcha data in my form yet). > > So the question is: why isn't defaultConnectionName setting up the > connection to the `websites` DB? What's missing? Is it missing > documentation & i need to do something more, or is this a bug? > > i'd appreciate any help before i post this to the Github issues. Thanks. > > -- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- You received this message because you are subscribed to the Google Groups "CakePHP" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/cake-php. For more options, visit https://groups.google.com/d/optout.
