반응형
모델 구성
출처:
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();
'CI4' 카테고리의 다른 글
[코드이그나이터] User Agent 클래스 (0) | 2020.09.07 |
---|---|
[코드이그나이터] 암호화 (0) | 2020.09.07 |
[코드이그나이터] 데이터베이스 메타데이터 (0) | 2020.09.07 |
[코드이그나이터] 트랜잭션(Transactiion) (0) | 2020.09.07 |
[코드이그나이터] 쿼리 빌더 (0) | 2020.09.07 |