본문 바로가기
카테고리 없음

eloquent orm ) 연관관계 특정 컬럼만 불러오기 (+ 불러오지 못한 이유 및 해결방법)

by Sein_ 2024. 2. 14.
728x90

발생:

연관관계가 정의된 테이블에서 특정 컬럼만 불러오고 싶었다.

deal_no  컬럼 값은 제대로 불러와졌는데 다른 컬럼 값을 불렀을 때는 불러와지지 않았다.

 

 

이유:

with('deal:comm')을 사용하여 comm 컬럼 값을 불러오지 못하는 이유는 조회하고자 하는 컬럼에 항상 id 컬럼과 관련 외래 키 컬럼이 포함되어 있지 않았기 때문입니다. 이것은 Laravel에서 관계를 설정할 때 일반적으로 요구되는 사항 중 하나이며, 관계를 설정할 때는 관련된 테이블 간의 연결을 위해 외래 키를 사용해야 합니다. 따라서 이러한 사항을 준수하지 않으면 with('deal:comm')과 같은 관계 로드가 올바르게 작동하지 않을 수 있습니다.

 

 

해결방법:

Order::with('deal:deal_id,comm')

 

 

발견사항:

아래처럼 특정 컬럼을 불러올 수 있다.

다만 deal_id 만 가능하고 comm 컬럼은 불가하다.

Order::with(['deal' => function ($query) {
    $query->select('deal_no');
}])

 

 

참고

https://laravel.kr/docs/8.x/eloquent-relationships#Eager%20%EB%A1%9C%EB%94%A9%EC%97%90%EC%84%9C%20%EC%BB%AC%EB%9F%BC%20%EC%A7%80%EC%A0%95%ED%95%98%EA%B8%B0

 

라라벨 8.x - Relationships-연관관계

라라벨 한글 메뉴얼 8.x - Relationships-연관관계

laravel.kr

 

* {note} 이 기능을 사용할 때에는, 조회하고자 하는 컬럼에 항상 id 컬럼과 관련 외래 키 컬럼이 포함되어 있어야 합니다.