sql >> Databasteknik >  >> RDS >> Mysql

Anslut till flera databaser i CakePHP 3

Du måste följa stegen nedan för att använda flera datakällor inom samma cakephp-applikation.

Nämn flera databaskällor i Config/app.php

Du måste hantera flera datakälla konfigurationer, i standard datakälla behålla huvuddatabas, och göra en datakälla till, vi kan säga det historia för andra datakällan. Som nämns nedan

'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),
    ]
]

Ange datakälla i tabellklasser

I Src/Model/Table/<AnyOtherSource>Table.php , Lägg till nedan metod, där du vill använda historikdatakällan. Du behöver inte lägga till nedanstående metod där du behöver använda standarddatakällan, för standarddatakällan tar CakePHP hand om det.

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

Gå med och modellförening i CakePHP 3

Lägg till nedanstående kod i 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. Hur importerar jag moduler eller installerar tillägg i PostgreSQL 9.1+?

  2. Korrekt PDO-syntax för parametriserad fråga med LIKE med jokertecken (ex %, _)

  3. Fel 404 hittades inte med EM 12c

  4. PHP/MySQL - Lagra arraydata som JSON, dålig praxis?