최근에 아주 골때리는 이슈를 하나 경험했다.
A 라는 모델을 리스트로 가져오는 로직이 존재했는데,
특정 관계(relation)을 eager loading 시켜주면 딱 한개의 데이터에서만 eager loading이 되지 않아, 관계가 null 값으로 잡히는 사례였다.
이게 왜 골때리는 문제였나면,
엘로퀀트 빌더의 with 연산을 통해서 relation을 load 할때 에러가 나므로 해당 관계가 존재하는지 확인하기 위해, 모델을 통해서 각자 id를 통해 접근하면 null 값이던 데이터가 생긴다는 것이었다.
원인을 파악하던 중, laravel 디버그 바의 쿼리 조사 파트에서, 해당 관계를 가져오는 sql에서 id 값이, 1,4,91219491429124, 이런식으로 int 타입으로 연산이 진행된다는 것을 확인 했다.
https://laracasts.com/discuss/channels/laravel/uuid-as-primary-key-type
https://laracasts.com/discuss/channels/laravel/uuid-as-primary-key-type
laracasts.com
결론적으로 해당 이슈를 확인하고, 모델에 모두 keyType을 지정한 결과 이슈를 해결할 수 있었다.
개인적으로 꽤 당황스러운 이슈였다. 프레임워크를 너무 마법같이 여길때 발생하는 문제 같다.
'개발 > 라라벨' 카테고리의 다른 글
tap, tap, tap (0) | 2023.09.27 |
---|---|
laravel Request life-cycle (생명주기) dd로 따라가보기 (2) (0) | 2023.09.11 |
laravel Request life-cycle (생명주기) dd로 따라가보기 (1) (0) | 2023.09.05 |
Eloquent Collection과 Support Collection 은 뭐가 다를까? (0) | 2023.09.01 |
laravel Notification queue 적용시에 모델에 따라서 memory size exhausted 되는 이슈 해결기 (0) | 2023.08.29 |