sql >> Database >  >> RDS >> Mysql

Maak verbinding met meerdere databases in CakePHP 3

U moet de onderstaande stappen volgen om meerdere gegevensbronnen binnen dezelfde cakephp-toepassing te gebruiken.

Vermeld meerdere databasebronnen in Config/app.php

U moet meerdere gegevensbronconfiguraties beheren, in de standaardgegevensbron de hoofddatabase behouden en nog een gegevensbron maken, we kunnen het geschiedenis noemen voor de tweede gegevensbron. Zoals hieronder vermeld

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => '<host name>',
        'username' => '<database user>',
        'password' => '<database password>',
        'database' => '<database name>',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'flags' => [],
        'cacheMetadata' => true,
        'log' => false,
        'quoteIdentifiers' => false,
        'url' => env('DATABASE_URL', null),
    ],
    'history' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => '<host name>',
        'username' => '<database user>',
        'password' => '<database password>',
        'database' => '<database name>',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'flags' => [],
        'cacheMetadata' => true,
        'log' => false,
        'quoteIdentifiers' => false,
        'url' => env('DATABASE_URL', null),
    ]
]

Gegevensbron specificeren in Tabellenklassen

In Src/Model/Table/<AnyOtherSource>Table.php , Voeg onderstaande methode toe, waar u de geschiedenisgegevensbron wilt gebruiken. Het is niet nodig om onderstaande methode toe te voegen waar u de standaard gegevensbron moet gebruiken, want de standaard gegevensbron zorgt ervoor dat CakePHP ervoor zorgt.

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

Deelnemen aan en modelassociatie in CakePHP 3

Voeg onderstaande code toe in Src/Model/Table/<All>Table.php

class LogsTable extends Table {

    public function initialize(array $config) {
        parent::initialize($config);

        $this->table($this->connection()->config()['database'] . "." . $this->table()); // this is very important for joining and associations.

        // your other code for initilize method
    }

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

    // other methods and your code should be here

}



  1. Python Panda's schrijven naar sql met NaN-waarden

  2. Gegroepeerde LIMIT in PostgreSQL:toon de eerste N rijen voor elke groep?

  3. Leg plan uit in mysql-prestaties met behulp van Tijdelijk gebruiken; Filesort gebruiken; Indexvoorwaarde gebruiken

  4. mysqldump van een query