default
以外へのデータベース接続を試みましたが、単純にapp.php
に接続設定を追加して、TableにuseDbConfig
を足しただけではうまくできませんでした。いろいろ調べて接続できるようになったので、対応方法をメモしておきます。
環境
- CentOS7
- CakePHP 3.2.12
- PHP 7.0.9
- Apache 2.4.6
対応方法
行うことは以下の2点です。
1 app.phpに設定を追加
app.php
//default以外に新たにDB接続設定を追加します
'another_db' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'another_host',
'username' => 'another_username',
'password' => 'another_password',
'database' => 'another_database',
'encoding' => 'utf8mb4',
'timezone' => 'UTC',
'cacheMetadata' => true,
'quoteIdentifiers' => false,
'log' => false,
'url' => env('DATABASE_TEST_URL', null),
],
2 Tableファイルに関数を作成
SamplesTable.php
<?php
namespace App\Model\Table;
use Cake\ORM\Table;
class SamplesTable extends Table
{
...
//この関数を追加します
public static function defaultConnectionName(){
return 'another_db';
}
...
}
これでSamplesTable
はanother_db
に接続できました!