라라벨 - Pivot 테이블의 컬럼을 사용해서 정렬하기

요청

작업하는 동중 업로드한 파일의 순서가 보장되지 않아 이 부분을 수정하면서 학습한 부분을 정리했습니다.

파일과 대상에 대한 Pivot 테이블을 정렬해 문제를 해결했습니다.


다대다 (Many To Many) 관계중간 테이블(Pivot Table)의 존재를 필요로 합니다.

Eloquent 에서는 중간 테이블Pivot 테이블이라고 부르고 있습니다.

해당 문서는 다다대 (Many To Many) 관계 설정 시 Pivot 테이블의 칼럼을 통해 정렬을 진행하는 방법을 소개하고 있습니다.

public function images()
{
  $relation = $this->belongsToMany(
      Image::class,
      'business_card_images',
      'business_card_id',
      'image_id'
  );

  return $relation
      ->withPivot('ordering')
      ->orderBy('pivot_' . 'ordering', 'asc');
}

Pivot 테이블 (중간 테이블)

논리적으로 다대다 관계의 표현은 가능하지만, 2개의 테이블만으로 구현하는 것은 불가능 합니다.

다대다 관계를 실제로 구현하기 위해선 각 테이블의 기본키 (Primary Key) 를 외캐키 (Foreign Key) 로 참조 하고 있는 연결 테이블 (매핑 테이블) 을 사용해야 합니다.

이를 ERD 로 표현하면 아래와 같습니다.


다대다(Many to Many)

다대다(M:N) 관계 테이블 구현하기(+ 식별관계, 비식별관계)

  • share