Du skal følge nedenstående trin for at bruge flere datakilder i samme cakephp-applikation.
Nævn flere databasekilder i Config/app.php
Du skal administrere flere datakildekonfigurationer, i standarddatakilden skal du beholde hoveddatabasen og lave en datakilde mere, vi kan sige det historie for anden datakilde. Som nævnt nedenfor
'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),
]
]
Angiv datakilde i tabelklasser
I Src/Model/Table/<AnyOtherSource>Table.php
, Tilføj nedenfor metode, hvor du vil bruge historiedatakilde. Ingen grund til at tilføje nedenstående metode, hvor du skal bruge standarddatakilde, for standarddatakilde vil CakePHP tage sig af det.
public static function defaultConnectionName() {
return 'history';
}
Deltagelse og modelforening i CakePHP 3
Tilføj koden nedenfor 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
}