Eloquent는 Laravel의 ORM(Object-Relational Mapper)입니다 — Active Record 패턴을 사용하며, 각 데이터베이스 테이블에는 대응하는 Model 클래스가 있고 모델 인스턴스는 행(row)을 나타냅니다. SQL을 작성하지 않고도 데이터베이스를 쿼리하고 조작하는 우아하고 표현력 있는 방법을 제공합니다.
모델 정의
{
= [, ];
}
모델은 Model을 확장하고 명명 규칙(User → users)에 따라 테이블에 매핑됩니다. $fillable 목록은 어떤 필드가 대량 할당될 수 있는지 제어합니다(보안 기능).
// CREATE
$user = User::create(['name' => 'Ann', 'email' => '[email protected]']);
$user = new User; $user->name = 'Bob'; $user->save();
// READ
User::all(); // 모든 행
User::find(1); // 기본 키로 조회
User::where('active', true)->get(); // 조건이 있는 쿼리
User::where('email', $email)->first(); // 첫 번째 일치 항목
// UPDATE
$user->update(['name' => 'New Name']);
$user->name = 'X'; $user->save();
// DELETE
$user->delete();
User::destroy(1);
Eloquent의 유연하고 체이닝 가능한 API는 거의 영어처럼 읽히며 SQL을 대신 생성해 줍니다 — 일반적인 작업에는 원시 쿼리가 필요 없습니다.
User::where('age', '>', 18)
->where('active', true)
->orderBy('name')
->limit(10)
->get(); // 체이닝 가능한 쿼리 빌드
User::where('role', 'admin')->count();
User::where('email', $e)->exists();
class Post extends Model {
public function author() { // 관계
return $this->belongsTo(User::class);
}
public function getExcerptAttribute() { // 접근자 (계산된 속성)
return Str::limit($this->body, 100);
}
}
$post->author; // 연관된 User
$post->excerpt; // 계산된 속성
Eloquent는 Laravel의 중심입니다 — 애플리케이션이 데이터베이스와 상호작용하는 방식이며, 그 우아한 Active Record 설계는 프레임워크에서 가장 칭송받는 기능 중 하나이므로, 그것을 숙달하는 것은 모든 Laravel 개발에 필수적입니다.
모델을 정의하고(관례에 따라 테이블에 매핑), CRUD 작업을 수행하며, 유연하고 체이닝 가능한 빌더로 쿼리하는 방법을 이해하는 것은 데이터 접근이 대부분의 애플리케이션의 핵심이므로 일상적이고 근본적인 지식입니다.
Eloquent의 표현력 있고 읽기 쉬운 API(User::where(...)->orderBy(...)->get())는 SQL을 작성하지 않고도 깔끔한 PHP로 데이터베이스를 다룰 수 있게 하여 생산성과 가독성을 크게 향상시킵니다.
모델은 또한 데이터 컨테이너 그 이상입니다 — 관계(연관된 테이블 연결)를 정의하고 접근자/변경자(계산된 속성)와 비즈니스 로직을 가질 수 있어 풍부한 도메인 객체가 됩니다.
$fillable 대량 할당 보호(보안 고려사항)를 아는 것도 중요합니다.
Eloquent는 Laravel 애플리케이션이 데이터를 읽고 쓰는 방식이며 — 거의 모든 Laravel 앱 전반에 나타나므로 — 모델과 Eloquent의 쿼리 API를 숙달하는 것은 효과적인 Laravel 개발을 뒷받침하는 근본적이고 반드시 알아야 할 내용입니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기