문제상황
adonis에서는 데이터베이스에 쿼리를 날리고
paginate()
를 사용하면 아래처럼 meta에 자동으로 페이지 정보를 설정해준다. (정말 멋진 기능이다.)
{
"meta": {
"total": 2,
"per_page": 10,
"current_page": 1,
"last_page": 1,
"first_page": 1,
"first_page_url": "/?page=1",
"last_page_url": "/?page=1",
"next_page_url": null,
"previous_page_url": null
},
"data": [{...}, {...}]
}
중복되는 데이터가 있어서 distinct 쿼리문을 날려주었다.
그런데 !!
실제 데이터는 중복되지 않는 데이터를 받았지만,
meta에 total은 중복데이터를 모두 포함한 숫자였다. 🤔
시도방법
공식문서에 검색
adonis github에 검색
구글링
어디에도 해결방법이 보이지 않았다.
그래서 limit 도 날려보고, count도 날려보고 어떻게든 숫자를 줄여보려고 했지만 모두 실패했다.
해결방법
검색 키워드에 adonis를 제외해봐야겠다는 생각이 들었다.
다른 프레임워크도 이런 상황이 하나쯤은 있지 않을까.
구글에 distinct pagination를 작성하는 순간
연관검색어로 distinct pagination laravel이 떴다.
그렇다. adonis는 laravel의 개발자가 만든 것이다. 🥳
역시 같은 문제를 겪고 있는 라라벨 사용자들 ..ㅎ
https://stackoverflow.com/questions/41283083/distinct-with-pagination-in-laravel-5-2-not-working
1시간 넘게 소모하던 문제를 바로 해결할 수 있었다.
pagination기능이 select절을 무시한다고 한다.
distinct대신 groupBy를 사용했다.
다음부터 adonis 기능이 제대로 작동하지 않으면 laravel 관련으로 검색해야겠다.