Eloquent ORM이란
Laravel에는 Eloquent라는 객체 관계 매퍼(ORM)가 포함되어 있습니다. Eloquent는 데이터베이스와의 대화를 쉽게 하기 위한 것으로, ActiveRecord 패턴을 구현하고 있습니다. Eloquent를 사용하면 데이터베이스의 각 테이블에 대응하는 “모델” 클래스를 준비합니다. 모델을 통해 레코드의 조회·삽입·갱신·삭제를 할 수 있습니다.Eloquent를 사용하기 전에
config/database.php에서 데이터베이스 접속을 설정해 주세요.
기본적으로 .env 파일의 DB_* 설정이 사용됩니다.모델 생성
make:model Artisan 명령으로 새 모델을 생성합니다.
-m 옵션을 사용합니다.
app/Models 디렉터리에 생성됩니다.
모델과 테이블의 대응 관계
Eloquent는 클래스명에서 테이블명을 자동으로 추측합니다. 클래스명을 스네이크케이스의 복수형으로 변환한 것이 테이블명이 됩니다.
테이블명이 명명 규칙에 맞지 않는 경우, 모델에
$table 프로퍼티를 정의해 명시적으로 지정할 수 있습니다.
타임스탬프
Eloquent는 기본적으로created_at과 updated_at 컬럼을 자동 관리합니다.
마이그레이션에서 $table->timestamps()를 추가해 두면 모델의 저장·갱신 시에 자동으로 값이 설정됩니다.
타임스탬프의 자동 관리를 무효화하려면 $timestamps를 false로 설정합니다.
매스 어사인먼트 보호
Eloquent로 데이터를 일괄 저장할 때는 매스 어사인먼트 보호 설정이 필요합니다.fillable
대입을 허용하는 컬럼을$fillable 프로퍼티로 지정합니다.
guarded
반대로 대입을 금지하는 컬럼을 지정하려면$guarded를 사용합니다.
Eloquent 쿼리 실행 플로우
User::where()->get() 같은 쿼리가 어떻게 실행되는지, 내부 흐름을 보여 줍니다.
기본 CRUD 조작
레코드 가져오기(Read)
모든 레코드를 가져옵니다.레코드 생성(Create)
create 메서드로 레코드를 하나 삽입합니다($fillable 설정이 필요합니다).
레코드 갱신(Update)
모델을 가져와 값을 변경한 후save를 호출하면 갱신됩니다.
update 메서드를 사용하면 여러 컬럼을 한 번에 갱신할 수 있습니다.
레코드 삭제(Delete)
delete 메서드로 레코드를 삭제합니다.
기본 쿼리 메서드
실전 예시: Post 모델을 사용한 데이터 조작
마이그레이션으로 생성한posts 테이블을 조작하는 컨트롤러 예시입니다.
모델 이벤트의 라이프사이클
save()를 호출했을 때 발생하는 이벤트의 흐름을 보여줍니다. 신규 생성인지 갱신인지에 따라 다른 이벤트가 발생하지만, saving·saved는 양쪽 경우에 공통적으로 발생합니다.
다음 단계
마이그레이션
Eloquent가 이용하는 테이블을 마이그레이션으로 생성하는 방법을 되짚어 봅니다.