| 제목 | 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() 와 같은 방식으로 사용 해야 합니다.