(스크랩 목록 작업을 구상하고 있었는데 일단은) 추천한 글/댓글 목록 작업부터 해봐야겠다는 생각이 들었습니다.
일단 기초부터 해보고 싶은 심산이었을까요ㅎㅎ
* 구조는 대강 이렇습니다.
- 모듈 설정에 따라 0. 사용 안 함, 1. 추천한 글만 보기, 2. 추천한 댓글만 보기, 3. 추천한 글/댓글 모두 보기 등이 있구요.
- 설정값에 따라 회원메뉴의 탭 이름과 목록이 각각 다른 방식으로 디스플레이됩니다.
* 다만, 한 가지 난관이 있었습니다. 작업 전 예상과 달리 '글과 댓글을 하나의 목록으로 통합'시키기가 쉽지 않더라는 거였어요;;;
- 아무리 해봐도 쿼리.xml 파일로는 구현이 안 되는 것 같아서 아래와 같은 커스텀 쿼리를 돌렸습니다.
$args = new stdClass; $args->member_srl = $this->user->member_srl; // 중략 $oDB = DB::getInstance(); $query = ' (SELECT document_voted_log.document_srl, null as comment_srl, document_voted_log.member_srl, document_voted_log.ipaddress, document_voted_log.regdate as voted_date, document_voted_log.point FROM document_voted_log LEFT JOIN comment_voted_log ON document_voted_log.member_srl = comment_voted_log.member_srl WHERE document_voted_log.member_srl = ?) UNION (SELECT null as document_srl, comment_voted_log.comment_srl, comment_voted_log.member_srl, comment_voted_log.ipaddress, comment_voted_log.regdate as voted_date, comment_voted_log.point FROM document_voted_log RIGHT JOIN comment_voted_log ON document_voted_log.member_srl = comment_voted_log.member_srl WHERE comment_voted_log.member_srl = ?) ORDER BY voted_date ASC LIMIT 20 '; $stmt = $oDB->query($query, [$args->member_srl, $args->member_srl]); $result = $stmt->fetchAll();
- 한참을 헤맸는데, 라이믹스의 xml로 UNION이 구현되지 않는 거 맞겠죠?
- 암튼 위와 같은 방식으로 목록을 만들었습니다. 그리고 document_srl 및 comment_srl에 따라 각각 문서 객체와 댓글 객체를 불러오고, $no값 재연을 위해 $key값 재배열하고, ... 이렇게 힘든데 스크랩 목록 작업까지 할 수 있으려나 싶습니다ㅜㅜ
* 이제 남은 작업은...
- 검색 기능과 페이지네비게이션 작업을 해야 합니다. 이 또한 까마득한 작업이네요ㅜㅜ 저 복잡한 코드 안에다 또 복잡한 코드를 집어넣어야 하다뇨;;; (검색 기능은 일단 보류를 해놔야겠습니다ㅎㅎ)
- 그리고 '글/댓글 모두 보기'일 경우, 버튼을 만들어서 파라미터를 전달하고 글 또는 댓글만 따로 목록화하는 것도 해야겠습니다.
- 결론 : 뭔가 스스로 일을 키운 느낌입니다;;;;
쉬엄 쉬엄 작업하셔요 ~