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
}