2016-06-09 3 views
0

환경이나 app ​​도메인을 기반으로 기본 데이터 소스를 전환하고 싶습니다.환경에 기반한 CakePHP3 스위치 데이터베이스 연결

'Datasources' => [ 
    'default' => [ 
     'className' => 'Cake\Database\Connection', 
     'driver' => 'Cake\Database\Driver\Mysql', 
     'persistent' => false, 
     'host' => 'localhost' 
    ], 

    'local' => [ 
     'className' => 'Cake\Database\Connection', 
     'driver' => 'Cake\Database\Driver\Mysql', 
     'persistent' => false, 
     'host' => 'localhost' 
    ], 

    'stage' => [ 
     'className' => 'Cake\Database\Connection', 
     'driver' => 'Cake\Database\Driver\Mysql', 
     'persistent' => false, 
     'host' => 'localhost' 
    ] 
],  

CakePHP3가이 논리를 처리 할 수있는 논리가 있습니까? 나는 te 문서에서 유용한 것을 발견 할 수 없다.

감사합니다. Mauri.

+0

가능한 복제 (http://stackoverflow.com/questions/36864867/how-to-let- [CakePHP의 3 아파치 환경 변수에 의해 데이터베이스 연결을 선택할 수 있도록하는 방법] cakephp-3-choose-database-connection-by-apache-environment-variable) – arilia

답변

1

각 DB의 모든 테이블이 같은 경우

당신은 ConnectionManager :: 별칭()를 사용할 수 있습니다

: 컨트롤러에서

:

사용 케이크 \ 데이터 소스 \은 ConnectionManager를;

if($somecase == "local") { 
    ConnectionManager::alias('local', 'default'); 
else if($somecase == "stage") { 
    ConnectionManager::alias('stage', 'default'); 
} 
else { 
    //cake will use default 
} 

이상의 참조 : http://api.cakephp.org/3.0/class-Cake.Datasource.ConnectionManager.html#_alias

관련 문제