제목 | Model의 세번째 파라메타, 데이터베이스 접속 정보 | ||
---|---|---|---|
글쓴이 | yishero | 작성시각 | 2015/12/18 11:16:04 |
|
|||
아래 내용을 참조해서 //세 번째 파라미터로 데이터베이스 연결정보를 넘겨주어서 연결할 수도 있습니다: $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
|
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;
|
CI는 싱글톤 패턴이 적용되어 있어 모델 로드전에 $this->load->database() 를 사용하여 db를 로드 하였다면 모델에서 새로운 DB 설정을 명시 하여도 기존 DB 환경을 사용하게 됩니다.
새로운 DB 설정으로 모델을 사용하고 싶다면 $db2 = $this->load->database($config, TRUE); 로 새로운 DB 객체를 생성한 후 $db2->query() 와 같은 방식으로 사용 해야 합니다.