CI4

[코드이그나이터] 모델 구성 [model]

으누아빠 2020. 9. 7. 21:54
반응형

모델 구성

출처:
http://ci4doc.cikorea.net/models/model.html

<?php namespace App\Models;

use CodeIgniter\Model;

class UserModel extends Model
{
    protected $table      = 'users'; //데이터베이스 테이블을 지정
    protected $primaryKey = 'id'; // 테이블에서 레코드를 고유하게 식별하는 열(column)의 이름

    protected $useAutoIncrement = true; // (auto-increment) 기능을 사용할지 여부

    protected $returnType = 'array'; //반환되는값 지정 array,object
    protected $useSoftDeletes = true; //true 일경우  실제로 행을 삭제하는 대신 deleted_at 필드를 설정

    protected $allowedFields = ['name', 'email']; //save, insert, update 메소드를 통하여 설정할 수 있는 필드 이름

    protected $useTimestamps = false; // INSERT 및 UPDATE에 자동으로 추가되는지 여부를 결정. reated_at’와 ‘updated_at’ 라는 열(column)이 있어야 함
    protected $createdField  = 'created_at'; //데이터 레코드 작성 타임스탬프를 유지하기 위해 사용하는 데이터베이스 필드
    protected $updatedField  = 'updated_at';// 데이터 레코드 업데이트 타임스탬프를 유지하기 위해 사용할 데이터베이스 필드
    protected $deletedField  = 'deleted_at';// 데이터 레코드 삭제 타임스탬프를 유지하기 위해 사용할 데이터베이스 필드

    protected $validationRules    = []; //유효성 검사 규칙 배열
    protected $validationMessages = []; //유효성 검증 중에 사용해야하는 사용자 정의 오류 메시지 배열
    protected $skipValidation     = false; //모든 inserts와 updates의 유효성 검사를 하지 않을지 여부 기본값은 false이며 데이터의 유효성 검사를 항상 시도.
}

find()

첫 번째 파라미터 로 전달된 값과 기본 키가 일치하는 단일 행(row)을 리턴

$user = $userModel->find($user_id); // $returnType에 지정된 형식으로 반환

$users = $userModel->find([1,2,3]);

findColumn()

null 또는 인덱스화된 열(column)의 값 배열을 반환

$user = $userModel->findColumn($column_name);

findAll()

모든 결과를 반환

$users = $userModel->findAll();
$users = $userModel->where('active', 1)->findAll();
$users = $userModel->findAll($limit, $offset);

first()

결과 집합의 첫 번째 행을 반환

$user = $userModel->where('deleted', 0) ->first();

withDeleted()

$useSoftDeletes가 true이면 find 메소드는 non-deleteted rows값만 노출하게됨

모든 값을 가져올려면 withDeleted() 이용

// Only gets non-deleted rows (deleted = 0)
$activeUsers = $userModel->findAll();

// Gets all rows
$allUsers = $userModel->withDeleted()->findAll(); 

onlyDeleted()

$useSoftDeletes가 true이면 softDelete 가 된 정보만 반환

$deletedUsers = $userModel->onlyDeleted()->findAll();

insert()

전달된 데이터의 연관 배열을 이용하여, 데이터베이스에 새로운 데이터 행을 작성

$data = [
    'username' => 'darth',
    'email'    => 'd.vader@theempire.com'
];

$userModel->insert($data);

update()

전달된 데이터의 연관 배열을 이용하여, 데이터베이스에 새로운 데이터 행을 작성

$data = [
    'username' => 'darth',
    'email'    => 'd.vader@theempire.com'
];

$userModel->update($id, $data);

기본(primary) 키 배열을 첫 번째 파라미터로 전달하여 다중 레코드를 업데이트할 수 있음

$data = [
    'active' => 1
];

$userModel->update([1, 2, 3], $data);

//쿼리빌더를 이용할경우 update()함수의 파라미터를 비워둔채 사용
$userModel
    ->whereIn('id', [1,2,3])
    ->set(['active' => 1])
    ->update();

save()

$primaryKey 값과 일치하는 배열 키가 존재하는지의 여부에 따라 레코드 INSERT 또는 UPDATE를 자동으로 처리

// Defined as a model property
$primaryKey = 'id';

// Does an insert()
$data = [
    'username' => 'darth',
    'email'    => 'd.vader@theempire.com'
];

$userModel->save($data);

// Performs an update, since the primary key, 'id', is found.
$data = [
    'id'       => 3,
    'username' => 'darth',
    'email'    => 'd.vader@theempire.com'
];
$userModel->save($data);

delete()

$userModel->delete(12);

$userModel->delete([1,2,3]);

// 매개 변수가 전달되지 않으면 쿼리 빌더의 delete 메소드처럼 작동하며 where 메소드 호출이 필요
$userModel->where('id', 12)->delete();

asArray()

find() 메소드의 데이터를 연관 배열로 리턴

$users = $userModel->asArray()->where('status', 'active')->findAll();

asObject()

find() 메소드의 데이터를 표준 객체 또는 사용자 정의 클래스 인스턴스로 반환

// Return as standard objects
$users = $userModel->asObject()->where('status', 'active')->findAll();

// Return as custom class instances
$users = $userModel->asObject('User')->where('status', 'active')->findAll();