- Auditable 트레잇: 모델 insert/update/delete 시 activity_log 자동 기록 (조회 제외, before/after JSON, 민감필드 마스킹, 사용자/IP) - 도메인 모델 28개에 적용 (로그성 테이블 제외) - 관리자 전용 조회: Admin\ActivityLog (기간/작업/대상/사용자 필터 + 상세 변경내역) - 라우트 admin/access/activity-logs(+상세), 메뉴 '활동 로그' 추가 - 테넌트 분리: 슈퍼=전체, 지자체관리자=소속 지자체만 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
39 lines
1.2 KiB
PHP
39 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use CodeIgniter\Model;
|
|
|
|
class BagOrderModel extends Model
|
|
{
|
|
use \App\Models\Traits\Auditable;
|
|
|
|
protected $table = 'bag_order';
|
|
protected $primaryKey = 'bo_idx';
|
|
protected $returnType = 'object';
|
|
protected $useTimestamps = false;
|
|
|
|
/**
|
|
* 동일 발주 UUID에 대해 bo_version이 최대인 행만 (수정으로 생긴 이전 버전 행은 목록·이력에서 제외).
|
|
* DB에는 버전별 행이 그대로 남고, 조회 시에만 필터한다.
|
|
*/
|
|
public function whereLatestHead(int $lgIdx): self
|
|
{
|
|
$lg = (int) $lgIdx;
|
|
|
|
return $this->where(
|
|
"(bo_uuid, bo_version) IN (SELECT bo_uuid, MAX(bo_version) FROM {$this->table} WHERE bo_lg_idx = {$lg} GROUP BY bo_uuid)",
|
|
null,
|
|
false
|
|
);
|
|
}
|
|
|
|
protected $allowedFields = [
|
|
'bo_uuid', 'bo_version', 'bo_lg_idx', 'bo_gugun_code', 'bo_dong_code',
|
|
'bo_company_idx', 'bo_agency_idx', 'bo_fee_rate', 'bo_order_date',
|
|
'bo_bag_types', 'bo_unit_prices', 'bo_qty_boxes',
|
|
'bo_lot_no', 'bo_hash', 'bo_status', 'bo_orderer_idx',
|
|
'bo_regdate', 'bo_moddate',
|
|
];
|
|
}
|