在CakePHP 3中连接多个数据库3
问题描述:
我想在其他数据库表中存储一些数据历史记录和日志,它可能是将来记录方面非常大的数据库。还应该支持跨数据库SQL连接。所以请帮我解决这个问题。在CakePHP 3中连接多个数据库3
在此先感谢
答
你按照下面FO相同的CakePHP应用程序中使用多个数据源的步骤。在配置/ 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
您可以通过与相应的数据库名称前缀的 表访问同一个MySQL实例其他数据库模型关联。您必须使用database_name.table_name指定表 名称,为此您需要在每个表类中添加以下代码 。
例如
SELECT * FROM this_database.table_1 t1 JOIN that_database.table_2 t2 ON t2.column = t1.column
添加以下代码中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
}
[CakePHP中3多个数据库连接]的可能的复制(https://*.com/questions/29981890 /多数据库连接在-cakephp中-3) –