2014-03-05 2 views

답변

11

설정하여 연결 : 당신의 모델에서

//This service returns a MySQL database 
$di->set('dbMaster', function() { 
    return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
     "host" => "localhost", 
     "username" => "", 
     "password" => "", 
     "dbname" => "" 
    )); 
}); 

//This service returns a PostgreSQL database 
$di->set('dbSlave', function() { 
    return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
     "host" => "localhost", 
     "username" => "", 
     "password" => "", 
     "dbname" => "" 
    )); 
}); 

연결 선택 :에서 동일한 구성

//This service returns a MySQL database 
$di->set('dbMaster', function() { 
    return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
     "host" => "localhost", 
     "username" => "", 
     "password" => "", 
     "dbname" => "" 
    )); 
}); 

//This service returns a PostgreSQL database 
$di->set('dbSlave', function() { 
    return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
     "host" => "localhost", 
     "username" => "", 
     "password" => "", 
     "dbname" => "" 
    )); 
}); 

를 사용하여,

public function initialize() 
{ 
    $this->setConnectionService('dbMaster'); 
    //or 
    $this->setConnectionService('dbSlave'); 
} 
+1

하지만이 코드를 사용하여 난 단지 하나의 데이터베이스를 사용할 수 있습니다 모델에 있지만 같은 모델에서 두 데이터베이스를 모두 사용하고 싶습니다 –

+1

미안하지만 성취하려고하는 것이 확실하지 않습니다. 아마도 당신은 이유가 있지만, 조언으로, 하나의 연결과 하나의 테이블에 대해 모델을 유지하려고 노력해야합니다. 목표가 무엇인지 더 잘 설명 할 수 있다면 아마도 나 또는 다른 사람이 올바른 해결책을 제시 할 수 있습니다. – crada

4

이 작업을 수행하는 또 다른 방법은 당신의 모델 집합

당신이 트랜잭션을 사용하는 경우
public function initialize() 
{ 
    $this->setReadConnectionService('dbSlave'); 
    $this->setWriteConnectionService('dbMaster'); 

    $this->setSource('table_name'); 
} 

,

$di->set('dbMaster' .... 

를 들어

$di->setShared('dbMaster'.... 

을 변경하는 인젝터 의존성에 기억하고 나머지는 같은

관련 문제