Bạn thực hiện theo các bước dưới đây để sử dụng nhiều nguồn dữ liệu trong cùng một ứng dụng cakephp.
Đề cập đến nhiều nguồn cơ sở dữ liệu trong Config / app.php
Bạn phải quản lý nhiều cấu hình nguồn dữ liệu, trong nguồn dữ liệu mặc định giữ cơ sở dữ liệu chính và tạo thêm một nguồn dữ liệu nữa, chúng ta có thể nói đó là lịch sử cho nguồn dữ liệu thứ hai. Như đã đề cập bên dưới
'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),
]
]
Chỉ định nguồn dữ liệu trong Lớp bảng
Trong Src/Model/Table/<AnyOtherSource>Table.php
, Thêm phương pháp bên dưới, nơi bạn muốn sử dụng nguồn dữ liệu lịch sử. Không cần thêm phương thức bên dưới khi bạn cần sử dụng nguồn dữ liệu mặc định, đối với nguồn dữ liệu mặc định, CakePHP sẽ đảm nhiệm việc đó.
public static function defaultConnectionName() {
return 'history';
}
Tham gia và liên kết mô hình trong CakePHP 3
Thêm mã bên dưới vào 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
}