cakephp3 несколько подключений к базе данных с плагином не загружается

Я пытаюсь загрузить некоторые данные из модели плагина, который использует другую базу данных. Я добавил запись в моем config / app.php следующим образом:

        /**
     * The test connection is used during the test suite.
     */
    'alternate1' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        //'port' => 'non_standard_port_number',
        'username' => 'alt_user',
        'password' => '********',
        'database' => 'secondary_db',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,
        'quoteIdentifiers' => false,
        'log' => false,
        //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
        'url' => env('DATABASE_TEST_URL', null),
    ],

В своем плагине класс /plugins/Importer/src/Model/LogsTable.php я добавил

    public static function defaultConnectionName() {
    return 'alternate1';
}

Теперь я хотел бы иметь возможность доступа к этим данным с контроллеров моих основных приложений, поэтому я попробовал это:

в /src/Controllers/ReviewController.php

$this->loadModel('Importer.Logs');
$logCount = $this->Logs->find('all')->count();

Если я проверю модель, как это:

print_r($this->Logs);

Я вижу, что он все еще использует соединение по умолчанию, а не соединение alternate1.

Cake\ORM\Table Object ( [registryAlias] => Importer.Logs [table] => logs [alias] => Logs [entityClass] => \Cake\ORM\Entity [associations] => Array ( ) [behaviors] => Array ( ) [defaultConnection] => default [connectionName] => default ) 

Я также пробовал TableRegistry::get('Importer.Logs') и несколько других вариантов, но в итоге я не могу заставить Cake правильно загрузить правильное соединение для передачи данных.

Мне здесь не хватает чего-то простого, я просто знаю это. Этот ответ: CakePHP 3 defaultConnectionName в модели плагина не работает, кажется, что я хочу, но это не правильно. Я уже использую формат Namespace.Model.

0 ответов

Другие вопросы по тегам