1
Model 기본 구조

Model 클래스에 테이블 정보, 허용 필드, 유효성 검사 규칙을 선언하면 CRUD 메서드를 자동으로 사용할 수 있습니다.

app/Models/PostModel.php
class PostModel extends Model
{
    protected $table         = 'posts';        // DB 테이블명
    protected $returnType    = Post::class;    // Entity 클래스로 반환
    protected $useSoftDeletes = true;          // 소프트 삭제 활성화
    protected $allowedFields = ['title', 'content', 'author', 'views'];
    protected $useTimestamps = true;           // created_at, updated_at 자동 관리

    protected $validationRules = [
        'title'   => 'required|min_length[2]|max_length[200]',
        'content' => 'required|min_length[10]',
        'author'  => 'required',
    ];
}
2
기본 CRUD 메서드
$model = new PostModel();

// 전체 조회
$posts = $model->findAll();

// ID로 단건 조회
$post = $model->find(1);

// 조건 조회
$post = $model->where('author', '김철수')->first();

// 삽입
$id = $model->insert(['title' => '새 글', 'content' => '...', 'author' => '홍길동']);

// 수정
$model->update(1, ['title' => '수정된 제목']);

// 삭제 (소프트 삭제: deleted_at 설정)
$model->delete(1);

// 완전 삭제
$model->delete(1, true);
실제 DB 조회 결과 (최신 5개)
ID제목작성자조회수작성일
1 CodeIgniter 4 시작하기 김철수 142 2026-09-15 17:18
2 라우팅의 기초 이영희 98 2026-09-15 17:18
3 Model과 데이터베이스 활용 박민준 215 2026-09-15 17:18
4 필터로 미들웨어 구현하기 최지수 67 2026-09-15 17:18
5 RESTful API 개발 정현우 183 2026-09-15 17:18
Query Builder

WHERE, JOIN, GROUP BY, 집계 함수를 PHP 코드로 작성합니다.

데모 보기
페이지네이션

paginate()로 데이터를 나눠서 보여주는 페이지네이션을 구현합니다.

데모 보기
Entity 클래스

데이터를 객체로 다루는 Entity 클래스와 커스텀 메서드를 알아봅니다.

데모 보기