Thanks for the suggestion. i'll read up on how to do that, but don't be surprised if i end up back here for some clarifications. But i'll give it a try before bugging the group again. :)
-joe
On Wednesday, 23 July 2014 02:34:29 UTC-4, José Lorenzo wrote:
-- -joe
On Wednesday, 23 July 2014 02:34:29 UTC-4, José Lorenzo wrote:
I would use plugins for organizing them
On Wednesday, July 23, 2014 5:33:18 AM UTC+2, Joe Theuerkauf wrote:Okay, i fixated on this tonight & i think i got it to work. i put CaptchasTable back in App/Model/Table, and behold the class loads correctly (i forgot to adjust the namespace in the previous message).
However, before i do a happy dance, i'd like to know if it's POSSIBLE to organize my Models into subdirectories as i was attempting to do:
Model/Table/* : My project's main DB Table classes
Model/Table/Websites/* : Table classes from the Websites database, so they're not cluttering up my project's main tables...
Model/Table/____/* : Similar if i need to connect to any other databases...
Can this be done at all?
On Tuesday, 22 July 2014 21:26:20 UTC-4, Joe Theuerkauf wrote:José:
Sorry for the delayed response. i've been getting burned out (and burned up with the weather), so i took a day to breathe.
i called $this->Captchas->defaultConnectionName() from inside the ContactsController: public function index() {
$this->loadModel('Captchas');
// PS: i'm using the LogTrait in the class...
$this->log('defaultConnectionName: ' . $this->Captchas->defaultConnectionName ());
// ...
}
Output in error.log:2014-07-23 01:16:55 Error: defaultConnectionName: default
Obviously, not what i was expecting. And that's the value whether i have CaptchasTable in the main Model/Table or in Model/Table/Website.
If you have further suggestions, please let me know. i know 3.0 is alpha so i do expect some breakage. But when the documentation is so brief & doesn't seem to work, it can be frustrating.
-joe
On Monday, 21 July 2014 04:08:18 UTC-4, José Lorenzo wrote: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 cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment