【CakePHP3】복수 데이터베이스 접속을 실현하는 방법

default 이외의 데이터베이스 연결을 시도했지만 단순히 app.php에 연결 설정을 추가하고 테이블에 useDbConfig를 더한 것만으로는 작동하지 않았습니다. 여러가지 조사해 접속할 수 있게 되었으므로, 대응 방법을 메모해 둡니다.

환경


  • CentOS7
  • CakePHP 3.2.12
  • PHP 7.0.9
  • Apache 2.4.6

  • 대응 방법



    할 일은 다음 두 가지입니다.

    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 테이블 파일에 함수 만들기



    SamplesTable.php
    <?php
    namespace App\Model\Table;
    use Cake\ORM\Table;
    
    class SamplesTable extends Table
    {
        ...
        //この関数を追加します
        public static function defaultConnectionName(){
            return 'another_db';
        }
    
        ...
    }
    
    

    이제 SamplesTableanother_db 에 연결할 수 있었습니다!

    참고문헌


  • Multiple database connection in cakephp 3 - stack overflow
  • 좋은 웹페이지 즐겨찾기