Połączenie z zewnętrzną bazą danych

Jeden z kontrolerów używa bazy danych na zdalnym serwerze

app.php

'remote_db' => [
    'className' => Connection::class,
    'driver' => Mysql::class, 
    'persistent' => false,
    'timezone' => 'UTC',
    'flags' => [],
    'cacheMetadata' => true,
    'log' => false,
    'quoteIdentifiers' => false,
],

app_local.php

'remote_db' => [
    'driver' => 'mysql',
    'username' => '...',
    'password' => '...',
    'database' => '...',
    'host'    => 'remote.example.com',     // zapis odczyt do zdalnej bazy
 /* 'read' => [
        'host' => 'remote.example.com',  // czytamy zdalną bazę
    ],
    'write' => [
        'host' => 'localhost',           // zapisujemy do lokalnej
    ] */
];

Table

namespace App\Model\Table;

use Cake\ORM\Table;

class ArticlesTable extends Table
{
    public static function defaultConnectionName(): string {
        return 'remote_db';
    }

    public function initialize(array $config): void 
    { 
      $this->setEntityClass('App\Model\Entity\Article'); 

      $this->setTable('my_table');

      $this->setPrimaryKey('my_id');
    }
}

Controller

use Cake\Datasource\ConnectionManager;
$connection = ConnectionManager::get('remote_db');
$query = $connection->selectQuery();
$query->select('*')
    ->from('articles')
    ->where(['published' => true]);
$query->useReadRole();

$query->useWriteRole();