오픈 소스 프로젝트 - XE 개발 포럼
글수 288
생성된 쿼리에 "order by"에 "documents.list_order" 때문에 문제가 생깁니다.
"comment.list_order"가 맞는데...
xml 파일에는 "comment.list_order"로 입력 돼있습니다.
소스상에서 "documents"로 바꾸는것 같네요.
modules/document/queries/getDocumentListWithinComment.xml
| <query id="getDocumentListWithinComment" action="select"> <tables> <table name="documents" alias="documents" /> <table name="comments" alias="comments"/> </tables> <columns> <column name="documents.document_srl" /> <column name="comments.list_order" /> </columns> <conditions> <condition operation="in" column="documents.module_srl" var="module_srl" filter="number" /> <condition operation="equal" column="documents.category_srl" var="category_srl" pipe="and" /> <condition operation="equal" column="documents.document_srl" default="comments.document_srl" notnull="notnull" pipe="and" /> <condition operation="equal" column="documents.member_srl" var="member_srl" filter="number" pipe="and" /> <group pipe="and"> <condition operation="more" column="documents.list_order" var="division" pipe="and" /> <condition operation="below" column="documents.list_order" var="last_division" pipe="and" /> </group> <condition operation="like" column="comments.content" var="s_comment" notnull="notnull" pipe="and" /> </conditions> <navigation> <index var="sort_index" default="comments.list_order" order="asc" /> <list_count var="list_count" default="20" /> <page_count var="page_count" default="10" /> <page var="page" default="1" /> </navigation> <groups> <group column="documents.document_srl" /> <group column="comments.list_order" /> </groups> </query> |
modules/document/document.model.php
| // document.getDocumentList 쿼리 실행 // 만약 query_id가 getDocumentListWithinComment 또는 getDocumentListWithinTag일 경우 group by 절 사용 때문에 쿼리를 한번더 수행 if(in_array($query_id, array('document.getDocumentListWithinComment', 'document.getDocumentListWithinTag'))) { $group_args = clone($args); $group_args->sort_index = 'documents.'.$args->sort_index; $output = executeQueryArray($query_id, $group_args); if(!$output->toBool()||!count($output->data)) return $output; foreach($output->data as $key => $val) { if($val->document_srl) $target_srls[] = $val->document_srl; } $target_args->document_srls = implode(',',$target_srls); $target_args->list_order = $args->sort_index; $target_args->order = $args->order_type; $target_args->list_count = $args->list_count; $target_args->page = 1; $output = executeQueryArray('document.getDocuments', $target_args); } else { $output = executeQueryArray($query_id, $args); } |
생성된 쿼리
| SELECT FIRST 20 SKIP 0 "documents"."document_srl", "comments"."list_order" FROM "xe_documents" as "documents", "xe_comments" as "comments" Where ("documents"."module_srl" in (58) and "documents"."document_srl" = "comments"."document_srl" and "comments"."content" like '%댓글%') and ("documents"."list_order" >= -102) GROUP BY "documents"."document_srl", "comments"."list_order" ORDER BY "documents"."list_order" asc |



"comments"."list_order" -> "documents"."list_order"
로 바꾸는게 맞겠네요...