-
라라벨 Eloquent One-to-Many Relationship백엔드/laravel 2024. 1. 21. 16:51
User 와 Post 테이블
마이크레이션.
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
....
$table->foreignId(column: 'user_id')->constrained(table: 'users')->cascadeOnDelete();....
$table->timestamps();
});
}One-to-Many Relationship 설정 (User 모델)
app\Models\User.php
// 복수로 표시. 일대다의 다
public function posts(): HasMany
{
return $this->hasMany(related: Post::class); // 또는
return $this->hasMany(related: Post::class, foreignKey: 'user_id', localKey: 'id');
}- hasMany 는 One-to-Many 관계를 설정합니다. 하나의 사용자(User)는 여러 개의 게시물(Post)을 가질 수 있습니다.
- Laravel은 기본적으로 외래 키(column: user_id)를 User 모델에서 기대하며, local key는 User 모델의 기본 키(ID)입니다.
BelongsTo 관계 설정 (Post 모델)
app\Models\Post.php
// 단수로 표시. 일대다의 일
public function user()
{
return $this->belongsTo(User::class);
}- belongsTo 메서드는 BelongsTo 관계를 설정합니다. 하나의 게시물(Post)은 특정 사용자(User)에 속합니다.
- Laravel은 기본적으로 외래 키(column: user_id)를 Post 모델에서 기대하며, local key는 User 모델의 기본 키(ID)입니다.
Tinker를 사용한 관계 데이터 검색
// 특정 게시물(Post)에 속한 사용자(User) 검색
$post = Post::find(1000);
$user = $post->user;$user->id;
$user->name;...
// 특정 사용자(User)가 작성한 모든 게시물(Post) 검색
$user = User::find(17);
$posts = $user->posts;
// Blade 템플릿에서 출력
@foreach ($user->posts as $post)
{{ $post->title }}
<br>
@endforeach'백엔드 > laravel' 카테고리의 다른 글
라라벨 "hasOneThrough" 관계를 사용한 중첩된 모델 간 연결 설정 (1) 2024.01.26 라라벨 Many-to-Many Relationship (1) 2024.01.21 라라벨 Eloquent one-to-one Relationship (0) 2024.01.21 php artisan make:model Contact -m 명령어와 옵션에 대한 설명 (0) 2024.01.21 Laravel 모델의 Fillable 과 Guarded (0) 2024.01.20