카테고리 없음

CodeIgniter 모델 (Models)

광82 2023. 7. 12. 11:29
반응형

설명


이제 MVC 모델에서 모델(Models)에 대해 알아보도록 하겠습니다.

 

모델(Models)은 데이터베이스와 연동해서 사용하기 위한 클래스입니다. [참고]

간단하게 생각하면 데이터베이스와 관련된 동작은 전부 모델에 모아둔다고 생각하시면 됩니다.

 

이번에는 데이터베이스 연결은 다음에 진행하지 않겠습니다.

일단 모델을 기본적인 모델 생성 방법과 모델을 사용하는 방법만 알아보도록 하겠습니다.

 

▶예제 (Example)


간단하게 members라는 배열에 존재하는 값을 반환하는 매서드를 만들도록 하겠습니다.

 

모델 생성 (Creating a Model)

application/models/Member_model.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
 
class Member_model extends CI_Model {
 
    public function __construct()
    {
        parent::__construct();
    }

    private $members = array(
        '1' => 'Edward',
        '2' => 'Alex',
        '3' => 'John'
    );

    public function GetMembers()
    {
        return $this->members;
    }
}
  • 2번째줄 : Model에 비정상적인 접근을 방지해주는 코드이그나이터에 기본 코드입니다.
  • 4번째줄 : 클래스명은 파일의 이름과 같아야합니다. 그리고 클래스는 CI_Model을 상속받아야 합니다.
  • 6~9번째줄 : Member_model 클래스의 생성자입니다. (모델을 생성할 때 생성자는 추가해주도록 합시다.)
  • 11~15번째줄 : 데이터를 데이터베이스에서 가져오는 것을 대체하기 위한 배열 값입니다.
  • 17~20번째줄 : members 배열에 존재하는 값을 반환해주는 매서드입니다.

 

모델 로딩하기 (Loading a Model)

application/controllers/Tutorial.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
    
class Tutorial extends CI_Controller {
    
    // ... 기존 예제 코드들은 생략하겠습니다.
    public function members()
    {
        $this->load->model('Member_model');
        
        $data['members'] = $this->Member_model->GetMembers();

        $this->load->view('Tutorial/members', $data);
    }
}
  • 9번째줄 : 모델을 로드합니다.
  • 11번째줄 : 모델에 GetMembers 매서드를 사용합니다.
  • 13번째줄 : 모델에서 가져온 값을 뷰에 전달합니다.

 

뷰 생성 (Creating a view)

application/views/Tutorial/members.php

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Member</title>
</head>
<body>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach($members as $id => $name) :?>
                <tr>
                    <td><?=$id?></td>
                    <td><?=$name?></td>
                </tr>
            <?php endforeach ?>
        </tbody>
    </table>
</body>
</html>
  • 17~21번째 : foreach를 사용하여 모델에서 가져온 데이터를 출력합니다. (위에서 사용하는 foreach는 코드이그나이터에서 제공하는 대체 foreach문법입니다.)

 

확인

http://localhost/ci/Tutorial/Members

 

 

▶모델 로딩하기 (Loading a Model)


여기서 모델은 위에서 만든 Member_model을 기준으로 설명합니다.

 

기본적인 모델 로딩 및 사용

$this->load->model('Member_model');
$this->Member_model->GetMembers();

 

하위 폴더에 위치한 모델 로딩 및 사용

$this->load->model('Tutorial/Member_model');
$this->Member_model->GetMembers();

 

모델 로딩 및 별칭으로 사용

$this->load->model('Member_model', 'Members');
$this->Members->GetMembers();

 

반응형