CI 묻고 답하기

제목 여러개의 데이타베이스를 왔다갔다 해야하는 환경 ???
글쓴이 람이 작성시각 2014/06/28 23:01:17
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 13658   RSS
별도의 데이타 베이스 서버를 통해 자료를 관리하고 있다면..
그리고 데이타베이스 마다 사용되는 성격이 달라서 따로 구분되어 있다면...

코드이그나이터에선 어떻게 사용해야 하나요 ?
일단 메뉴얼은 봐도 이해가 안가구요...

config > database.php 에서는 한개밖에 사용못하는거 같고...
Active group = true 랑은 상관없을 듯 하고

그렇다고 컨트롤러나 모델에서 사용하고자 하는 DB명을 config를 이용해서 설정해도 안되고...

도무지 이해가 되지 않아.... 머리만 아프네요... ㅠ.ㅜ
 다음글 하나의 컨트롤러 함수 두개의 모델함수 하나의 뷰... ... (3)
 이전글 파일업로드에서 무슨문제있지 모르겠습니다 좀 알려주세요 ... (1)

댓글

darkninja / 2014/06/28 23:39:31 / 추천 0
검색하다가 담에 필요할까 줏어둔 것입니다.
전 아무것도 모르니 참고만 하세요!

여기 잘 설명되어있네요
http://www.cikorea.net/tip/view/487/page/12/
예제
http://www.cikorea.net/source/view/315/page/3

/*
|--------------------------------------------------------------------------
| Site
| Set a constant for whichever site you happen to be running, if its not here
| it will fatal error.
|--------------------------------------------------------------------------
*/

if (!defined('SITE')) {
 switch($_SERVER['HTTP_HOST']) {
  case 'example.com':
  case 'www.example.com':
   define('SITE', 'example');
   break;
    
  case 'example2.com':
  case 'www.example2.com':
   define('SITE', 'example2');
   break;
    
  default:
   define('SITE', 'default');
   break;
 }
}

//$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'root';
$db['default']['database'] = 'myblog';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

// example
$db['example']['hostname'] = "localhost";
$db['example']['username'] = "root";
$db['example']['password'] = "";
$db['example']['database'] = "example";
$db['example']['dbdriver'] = "mysql";
$db['example']['dbprefix'] = "";
$db['example']['active_r'] = TRUE;
$db['example']['pconnect'] = TRUE;
$db['example']['db_debug'] = TRUE;
$db['example']['cache_on'] = FALSE;
$db['example']['cachedir'] = "";
$db['example']['char_set'] = "utf8";
$db['example']['dbcollat'] = "utf8_general_ci";

// Example 2
$db['example2']['hostname'] = "localhost";
$db['example2']['username'] = "root";
$db['example2']['password'] = "root";
$db['example2']['database'] = "testfoo";
$db['example2']['dbdriver'] = "mysql";
$db['example2']['dbprefix'] = "";
$db['example2']['active_r'] = TRUE;
$db['example2']['pconnect'] = TRUE;
$db['example2']['db_debug'] = TRUE;
$db['example2']['cache_on'] = FALSE;
$db['example2']['cachedir'] = "";
$db['example2']['char_set'] = "utf8";
$db['example2']['dbcollat'] = "utf8_general_ci";

// Check the configuration group in use exists, if not use the default
$active_group = (defined('SITE') && array_key_exists(SITE, $db)) ? SITE : 'default';

your_model.phpPHP

class Anotherdb_model extends CI_Model
{
  private $another;
  function __construct()
  {
    parent::__construct();
    $this->db2 = $this->load->database('example2',TRUE);
  }
 
  public function getSomething()
  {
    $this->db2->select('somecol');
    $q = $this->db2->get('sometable');
    if($q->num_rows()>0)
    {
      foreach($q->result() as $row)
      {
        $data[] = $row;
      }
    }
    else
    {
      return FALSE;
    }
  }