Трябва да следвате стъпките по-долу за използване на множество източници на данни в едно и също приложение cakephp.
Споменете множество източник на база данни в Config/app.php
Трябва да управлявате множество конфигурации на източници на данни, в източника на данни по подразбиране да запазите основната база данни и да направите още един източник на данни, можем да го кажем история за втори източник на данни. Както е посочено по-долу
'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),
]
]
Посочете източник на данни в класове на таблици
В Src/Model/Table/<AnyOtherSource>Table.php
, Добавете по-долу метод, където искате да използвате източник на данни за историята. Няма нужда да добавяте метод по-долу, където трябва да използвате източник на данни по подразбиране, за източник на данни по подразбиране CakePHP ще се погрижи за това.
public static function defaultConnectionName() {
return 'history';
}
Присъединяване и асоцииране на модел в CakePHP 3
Добавете кода по-долу в 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
}