아래의 코드와 같이 직접 쿼리를 날리는 데 성공은 했는데, 역시나 모듈 같은 서드파티 공개용 자료에서는 xml 파일로 옮기는 게 멋진 거 같아서요. (왜일까요ㅋㅋㅋ)
간혹 보면 소개되지 않은 구문이나 연산자가 xml로 구현 가능하기도 하던데 정말 혹시에 혹시나 해서 가능한지 문의해봅니다.
디버그하면 결과는 잘 나옵니다. 로그인한 자신과 쪽지를 나눈 상대가 누구인지(partner_srl)를 목록으로 만들어주고, 거기에 가장 최근의 메시지 번호와 등록일(last_message_srl, last_regdate), 상대와 나눈 쪽지 개수(message_count), 상대와 처음 나눴던 메시지 번호와 등록(first_message_srl, first_regdate), 상대와의 대화 중 아직 읽지 않은 쪽지 개수(unread_count) 등을 합쳤습니다.
정말 xml로 옮길 방법 없을까요?
에효... 뭔가 쓸데없이 헤매고 있는 것 같고 그렇습니다.
$member_srl = Context::get('logged_info')->member_srl; $page = max(1, intval(Context::get('page'))); $list_count = 10; $limit = ($page > 1) ? $list_count * ($page - 1) . ', ' . $list_count : $list_count; $oDB = DB::getInstance(); $query = 'SELECT CASE WHEN message_type = ? THEN receiver_srl ELSE sender_srl END AS partner_srl, MAX(message_srl) AS last_message_srl, MAX(regdate) AS last_regdate, COUNT(message_srl) AS message_count, MIN(message_srl) AS first_message_srl, MIN(regdate) AS first_regdate, SUM(CASE WHEN readed = ? THEN 1 ELSE 0 END) AS unread_count FROM member_message WHERE ((receiver_srl = ? AND message_type IN (?, ?)) OR (sender_srl = ? AND message_type = ?)) GROUP BY partner_srl ORDER BY last_message_srl DESC LIMIT ?'; $cond_arg = ['S', 'N', $member_srl, 'R', 'T', $member_srl, 'S', $limit]; $stmt = $oDB->query($query, $cond_arg); $result = $stmt->fetchAll();
https://rhymix.org/manual/plugin/dbquery/operation
여기에서 제공해주는거랑
https://github.com/rhymix/rhymix/pull/1332
여기에서 안내해주고 있는 업데이트 사항 말고는 개발이 안되어있으니 직접 쿼리문을 작성해야합니다.
그래도 파라미터형식으로 작성해주셔서 인젝션 공격방어도 되어있고 그래서 그렇게 쓰시는게 좋을듯 하네요 :)