반응형

이번엔 모델이란걸 해보자. 모델이란 걸 해보기 전에 디비에서 게시판 데이터를 가져와서 게시판 리스트에 뿌리는걸 먼저 해보자.

 

우선 컨트롤을 수정한다.

 

/app/Controllers/Board.php

 

<?php

namespace App\Controllers;

class Board extends BaseController
{
    public function list()
    {
        $db = db_connect();
        $query = "select * from board order by bid desc";
        $rs = $db->query($query);
        $data['list'] = $rs->getResult();//결과값 저장
        return render('board_list', $data);//view에 리턴
    }

    public function write()
    {
        return render('board_write');  
    }

    public function view()
    {
        return render('board_view');  
    }
}

모델을 사용하지 않고 디비에 연결해서 쿼리를 날린 후 데이터를 가져왔다. 그리고 그 데이터를 배열에 넣고 게시판 리스트 페이지로 보낸다.

 

이번엔 board_list에서 어떻게 받는지 확인해보자.

 

/app/Views/board_list.php

 

    <table class="table">
        <thead>
            <tr>
            <th scope="col">번호</th>
            <th scope="col">글쓴이</th>
            <th scope="col">제목</th>
            <th scope="col">등록일</th>
            </tr>
        </thead>
        <tbody id="board_list">
            <?php
            foreach($list as $ls){
            ?>
                <tr>
                    <th scope="row"><?php echo $ls->bid;?></th>
                    <td><?php echo $ls->userid;?></td>
                    <td><?php echo $ls->subject;?></td>
                    <td><?php echo $ls->regdate;?></td>
                </tr>
            <?php }?>
        </tbody>
        </table>

데이터를 넘길때 $data['list']로 넘겼다. 그러면 view에서는 $data의 키값으로 받게 된다. 키값으로 보내준 $list에 결과값이 들어 있다.

 

자 이제 php spark server 로 웹서버를 실행한뒤 확인해보자

 

이런식으로 board 테이블에 저장돼 있는 값이 표시되면 성공이다. 이번엔 모델을 이용해 보자.

 

게시판에서 사용할 모델을 하나 만들어 준다.

 

/app/Models/BoardModel.php

 

<?php
namespace App\Models;  
use CodeIgniter\Model;
 
class BoardModel extends Model{
    protected $table = 'board';//사용하는 테이블
    protected $returnType     = 'object';//이값이 없으면 기본이 array가 된다.
    //사용할 컬럼지정, 전부 다 해줬다.
    protected $allowedFields = [
        'bid'
        ,'userid'
        ,'subject'
        ,'content'
        ,'regdate'
        ,'modifydate'
        ,'status'
        ,'parent_id'
    ];
}

 

이렇게 만들어준다. 이제 컨트롤러에서 모델을 불러와 사용해보자.

 

/app/Controllers/Board.php

 

<?php

namespace App\Controllers;
use App\Models\BoardModel;//사용할 모델을 반드시 써줘야한다.

class Board extends BaseController
{
    public function list()
    {
        // $db = db_connect();
        // $query = "select * from board order by bid desc";
        // $rs = $db->query($query);
        // $data['list'] = $rs->getResult();//결과값 저장
        $boardModel = new BoardModel();
        $data['list'] = $boardModel->orderBy('bid', 'DESC')->findAll();
        return render('board_list', $data);//view에 리턴
    }

    public function write()
    {
        return render('board_write');  
    }

    public function view()
    {
        return render('board_view');  
    }
}

 

이렇게 수정한 후 게시판 리스트를 확인해보자.  

 

http://localhost:8080/board

 

아까와 같이 게시판의 내용이 출력되면 성공이다.

 

하지만 앞으로의 대부분의 예제에서는 모델을 사용하지 않을 것이다. 그런 예제들은 다른곳에 많으니 다른 곳에서 확인하자. 여기서는 쭈욱 야매로~

반응형

+ Recent posts