2012-11-23 2 views
0

"한 모델/컨트롤러에 대해 두 개의 데이터베이스"에 대해 다양한 Q & A를 읽었습니다. 특정 사례 (예 : http://goo.gl/EP8BB)에 대한 여러 가지 해결책을 찾았지만 한 응용 프로그램을 두 개의 데이터베이스 이 과정이 어렵고 시간이 많이 걸립니다.하나의 CakePHP 응용 프로그램, 두 개의 데이터베이스

나는 두 개의 데이터베이스 (동일한 구조, 다른 데이터)를 가지고 있지만 단 하나의 CakePHP 1.3 애플리케이션 만 사용하고 싶습니다. 어느 데이터베이스에 연결할지 선택하는 방법은 무엇입니까? SERVER_NAME을 보면 간단합니다.

내 database.php 파일에 두 개의 데이터베이스가 있습니다. 모델에서 이와 비슷한 것을 설정할 수없는 이유는 무엇입니까?

**MyModel.php** 
----------- 
class MyModel extends AppModel { 
    if ($_SERVER['SERVER_NAME' == "app1") { 
     var $useDbConfig = "database1"; 
    } else if ($_SERVER['SERVER_NAME' == "app1") { 
     var $useDbConfig = "database2"; 
    } 
} 

이 "빠른 해결책"이 순진하고 어리석은가요? 끝없는 구성 요소를 작성하고 데이터 소스를 설정하는 대신 처리하기가 너무 쉬워 보입니다. (아직 작동하지는 못했습니다.)

+0

저는 실망스런 프레임 워크가 얼마나 힘들지는 모르겠지만 ... 이것은 질문입니까 아니면 호언 장담입니까? –

+0

죄송합니다. 이것이 호언 장담 할 수 있음을 이해합니다. 그러나 그것은 실제로 문제입니다. 글로벌 변수를 가지고 놀 수 있습니까? - 모델에서 "데이터베이스 스위치"를 직접 처리 할 수 ​​있습니까? 나는 노력하고있다. 그러나 나는 비참하게 실패하고있다. 미안해, 내 영어로. –

답변

2

ifelse- 모델의 __construct 메소드의 코드 (화면을 채우는 불쾌한 오류를 방지하기 위해) - 아니요, 단순하지도 않고 어리 석도 아닙니다.

sth - 좀 더 확장되었지만 기본적으로 개발 및 프로덕션 구성 사이를 전환하는 것과 비슷합니다.

각 구성 스위치가 더 복잡하거나 여러 응용 프로그램에서 사용되는 경우 구성 요소가 내 눈에 이해가됩니다.

+0

예, 구조에 해당 코드가 있지만 올바른 db를 설정할 수 없습니다. 1.3 또는 2.x를 실행하고 있습니까? –

+0

내가 1.3으로 업데이트했는지 기억하지 못하기 때문에 젠드로 바꿨지 만 적어도 1.3에서 작동해야합니다 : 'AppModel extends Model { function __construct ($ id = false, $ table = null, $ ds = null)) { if ($ this-> isDevelopmentServer_myOwnMethod_()) { $ this-> useDbConfig = 'default'; } else { $ this-> useDbConfig = 'production'; } parent :: __ construct ($ id, $ table, $ ds); } ... ' – webdepp

+0

해결되었습니다. 이것에 대한 귀하의 지원에 감사드립니다. –

관련 문제