티스토리 뷰
반응형
Laravel 11에서 Eloquent ORM은 관계형 데이터베이스의 테이블 간 연관 관계를 쉽고 직관적으로 처리할 수 있도록 도와줍니다. Laravel 10과 거의 동일한 방식으로 작동하지만, Laravel 11에서는 더 깔끔한 문법과 일부 향상된 기능이 포함되어 있을 수 있습니다.
아래는 Laravel 11에서 사용할 수 있는 Eloquent의 주요 연관관계(relationships) 들입니다:
🔹 1. One To One (1:1)
// User 모델
public function phone()
{
return $this->hasOne(Phone::class);
}
// Phone 모델
public function user()
{
return $this->belongsTo(User::class);
}
🔹 2. One To Many (1:N)
// Post 모델
public function comments()
{
return $this->hasMany(Comment::class);
}
// Comment 모델
public function post()
{
return $this->belongsTo(Post::class);
}
🔹 3. Many To Many (N:N)
// User 모델
public function roles()
{
return $this->belongsToMany(Role::class);
}
// Role 모델
public function users()
{
return $this->belongsToMany(User::class);
}
⚠️ pivot 테이블은 기본적으로 role_user 형태로 생성되고, 중간 테이블의 키는 알파벳 순 정렬됩니다 (role_id, user_id).
🔹 4. Has One Through / Has Many Through
// Country → HasManyThrough → Post (중간 모델: User)
public function posts()
{
return $this->hasManyThrough(Post::class, User::class);
}
🔹 5. Polymorphic (다형성 관계)
📌 One to Many Polymorphic
// Post, Video 모델
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
// Comment 모델
public function commentable()
{
return $this->morphTo();
}
📌 Many to Many Polymorphic
// Post, Video 모델
public function tags()
{
return $this->morphToMany(Tag::class, 'taggable');
}
// Tag 모델
public function posts()
{
return $this->morphedByMany(Post::class, 'taggable');
}
public function videos()
{
return $this->morphedByMany(Video::class, 'taggable');
}
💡 추가 팁
- 관계 호출 시 lazy loading, with()으로 eager loading, load()로 이미 로드된 모델에 eager loading도 사용할 수 있어 성능 최적화 가능
- withCount(), withSum() 등도 활용 가능
반응형
'배움 > PHP' 카테고리의 다른 글
PHP strict_types 기능 (0) | 2025.04.29 |
---|---|
PHP collect 함수와 예제들 (0) | 2025.04.28 |
PHP HTML parser 방법 (0) | 2025.04.17 |
Laravel 11 라라벨 스케줄링(Scheduling) (0) | 2025.04.16 |
Lavavel Console Command Argument 옵션 (0) | 2025.04.15 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Laravel
- #collect
- uniqid
- mysql
- laravel 12
- call_user_func
- createfromformat
- laravel 테스트
- swagger
- 비동기
- flask
- WSL2
- reflectionclass
- strict_types
- ob_get_contents
- array_combine
- researcher
- jp:a
- privatechannel
- ubuntu
- laravel 11
- 설정
- 설치
- 명령어
- eloquent
- PYTHON
- facades
- curl_multi_init
- wsl
- php
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함