Model(1/5) - 설정 및 사용

2015. 9. 4. 16:23Programming/CodeIgniter

반응형

* 데이터와 관련된 일을 한다. 즉, 데이터 베이스와 연관된 일을 하는 곳이다.

* CI에서 model 기능이 제대로 작동하려면 CI_Model 를 반드시 상속 받아야 한다.


* 실습을 위해서는 반드시 데이터 베이스와 연동이 되어 있어야 한다.

* 설정은 application/config/database.php 에서 설정을 할 수 있다.

 - 기본적으로 설정되어야 할 값

$db['default']['hostname'] = 'localhost'; // IP 또는 hostname

$db['default']['username'] = 'scott';

$db['default']['password'] = 'tiger';

$db['default']['database'] = 'PROD';

$db['default']['dbdriver'] = 'odbc'; 

 - 설정 해주는 라인 위쪽으로 올라가보면 주석처리로 어떤 것들이 지원이 되고 어떤 이름을 넣어야 하는지도 나와 있음.

    system/database/drivers 경로에 보면 지원하고 있는 dbdriver 파일들이 있음.

 - database.php 파일은 보안상으로 많은 문제를 발생 시킬 수 있기 때문에, 파일에 대한 권한을 좀 더 신경을 써야 함.

    git 같은 소스관리 툴을 사용할 때는 ignore가 되도록 해야하며, 여러모로 주의를 기울여야하는 파일임.


* 데이터베이스를 불러오는 방법.

1. application/config/autoload.php 파일에서 $autoload['libraries'] = array('database') 라고 설정.

   - 이럴경우 계속적으로 데이터베이스를 불러옴.(테스트는 안해봄)

   - 더이상 데이터베이스를 불러오지 않아 편할지는 모르겠으나, DB를 많이 사용하지 않는 페이지이거나, 전혀 사용되지 않        는 페이지들이 DB 사용률 보다 페이지가 더 많이 불러오게 되는 경우는 안좋을 수 있다.

     즉, 사용 할 때마나 DB에 접속하는 방법이 좋다. 매번 DB에 접속하는 것보다 사용 할 때만 접속하는 것이 속도에 좋고

         DB의 부담도 줄어 들 것이다.


2. 사용 할 때마나 DB에 접속.

   - application/models/ 폴더에 ***_model.php를 생성하고 controller 파일에서 제어를 하는 방법.

   - 일반적으로 모델 파일명 규칙은 사용될 데이터베이스의 테이블 이름을 사용하고 _model이라고 반드시 붙여준다.


* models/Tablename_model.php

class Tablename_model extends CI_Model {

    function __construct() {   //method 를 초기화

        parent::__construct();

       // 매번 초기화를 해야하는 method가 있으면 이곳에 추가를 해주면 됨.

    }


   public function gets() {

       //$this->db->query()->result(); 문법.

       return $this->db->query('SELECT id,name from tablename')->result();

       //객체 - result(), 배열 - result_array(), 값이 하나 일 경우 - row()

   }

 


* controller/topic.php

function index() {

    $this->load->database();

    $this->load->model('topic_model');  //topic_model.php 파일을 불러오겠다.

    $data=$this->topic_model->gets();  //topic_model.php 의 gets라는 method를 사용하여 $data에 넣겠다.


    $this->load->view('main',array('topics'=>$data));

}


function get($id) {


    $this->load->view('get',array('id'=>$id));


}


* views/main.php

<?

    foreach($topics as $entry) {

?>

    <li><a href="index.php/topic/get/<?=$entry->id?>"><?=$entry->id?></a></li>

<?

    }

?>


* views/get.php

 This is get page.<?=$id?>


반응형

'Programming > CodeIgniter' 카테고리의 다른 글

Model(3/5) - 소스 중복제거  (0) 2015.09.07
Model(2/5) - 리스트와 각 리스트 정보 구현  (0) 2015.09.04
View  (0) 2015.09.04
Controller  (0) 2015.09.04
CodeIgniter와의 규칙?  (0) 2015.09.04