제목
Logika Absensi Barcode
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- Laravel/PHP 개발자
- 중간 수준의 웹 애플리케이션 개발자
- 출퇴근 관리 시스템 구축에 관심 있는 개발자
핵심 요약
jadwal
테이블 생성libur
,masuk_pagi_start
,pulang_siang_end
등 시간 정보를 포함한 마이그레이션 구현- Jadwal 모델 정의
$fillable
배열로 필드 지정,HasFactory
trait 사용scanBarcode
컨트롤러 로직Carbon::now()
로 현재 시간 가져오기,jadwal
데이터로 출퇴근 여부 판단
섹션별 세부 요약
1. 마이그레이션 파일 생성
php artisan make:migration create_jadwal_table
명령어로jadwal
테이블 생성up()
메서드에서libur
플래그와 시간 범위(masuk_pagi_start
,pulang_siang_end
등) 필드 정의php artisan migrate
명령어로 데이터베이스에 테이블 생성
2. Jadwal 모델 정의
php artisan make:model Jadwal
명령어로 모델 생성protected $fillable
배열로 테이블 필드 지정HasFactory
trait 사용하여 테스트 데이터 생성 가능
3. `scanBarcode` 컨트롤러 로직
- Barcode 검증
Student::where('barcode', $request->barcode)->first()
로 학생 정보 조회- 시간 비교 로직
Carbon::now()
로 현재 시간 가져오기jadwal
데이터의masuk_pagi_start
/pulang_siang_end
와 비교하여 출퇴근 여부 판단- Absensi 상태 처리
Absensi::create()
로 출근 기록,update(['pulang' => $now])
로 퇴근 기록
결론
- 데이터베이스 기반의 유연한 스케줄링
jadwal
테이블을 통해 출퇴근 시간을 언제든지 수정 가능Carbon
라이브러리 사용으로 시간 비교 로직 간결화Absensi
모델과 연동하여 중복 출퇴근 방지 처리- "Laravel의 Eloquent ORM과 마이그레이션 기능을 활용해 스케줄링 로직을 모듈화할 수 있다"