CI 묻고 답하기

제목 Model의 세번째 파라메타, 데이터베이스 접속 정보
글쓴이 yishero 작성시각 2015/12/18 11:16:04
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 13652   RSS

아래 내용을 참조해서 

//세 번째 파라미터로 데이터베이스 연결정보를 넘겨주어서 연결할 수도 있습니다:

$config['hostname'] = 'localhost';
$config['username'] = 'myusername';
$config['password'] = 'mypassword';
$config['database'] = 'mydatabase';
$config['dbdriver'] = 'mysqli';
$config['dbprefix'] = '';
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;

$this->load->model('model_name', '', $config);

 

이렇게 

$this->load->model("genomes/Genome_model", "g_Genome_model", $genome_db_con);

 

와 같이 세번째 파라메터로 db정보를 넘겼습니다.

 

이것을 받은 Genome_model에서

 

$query = $this->db->get("table_name");

 

과 같이 호출하니 db가 변경되지 않아서 에러가 발생하네요. 모델에서 어떤 수정이 필요한지 고수님들의 조언 부탁드립니다.

 다음글 멀티 pagenation 하려고 하는데요.. 조언좀 구... (3)
 이전글 sqlsrv 드라이버 사용시.. sqlsrv_next_...

댓글

한대승(불의회상) / 2015/12/18 11:39:24 / 추천 0

CI는 싱글톤 패턴이 적용되어 있어 모델 로드전에 $this->load->database() 를 사용하여 db를 로드 하였다면 모델에서 새로운 DB 설정을 명시 하여도 기존 DB 환경을 사용하게 됩니다.

 

새로운 DB 설정으로 모델을 사용하고 싶다면 $db2 = $this->load->database($config, TRUE); 로 새로운 DB 객체를 생성한 후 $db2->query() 와 같은 방식으로 사용 해야 합니다.

yishero / 2015/12/18 13:58:53 / 추천 0

컨틀롤러에서 어떤 database를 쓸지 정하는 방식이라 config/database.php 파일에 미리 정의를 할 수 없는 상태입니다.

이런 경우에 어떻게 해야하나요?

한대승(불의회상) / 2015/12/18 14:24:34 / 추천 0
$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";

$db2 = $this->load->database($config, TRUE);

 

yishero / 2015/12/18 14:43:08 / 추천 0
지침대로 단순히 하면 되는 건데 쉽게 해보려고
기존 설정을 받아서 database만 바꾸려고 한 아래 코드가 실패 원인이었습니다.
감사합니다.


$db_config = get_object_vars($this->db);//이렇게 하지말자.
$db_config["database"] = $new_database;