별점 댓글 쓸 땐 별점을 선택해서 하니깐 추가할 별점을 바로 알 수가 있는데,
지울려니깐.. 몇점을 지워야 할지를 디비에서 추출해내기가 좀 더 까다롭군요. -_-a;;
resource 모듈에서 보니깐 좀 더 많은 쿼리가 필요로 하네요.
$p_args->module_srl = $this->module_srl; $p_args->package_srl = $package->package_srl; $output = executeQuery('resource.getPackageSumStars', $p_args); $p_star_args->module_srl = $this->module_srl; $p_star_args->package_srl = $args->package_srl; $p_star_args->voted = (int)$output->data->voted; $p_star_args->voter = (int)$output->data->voter; $output = executeQuery('resource.minusPackageStar', $p_star_args); $p_args->module_srl = $this->module_srl; $p_args->package_srl = $package->package_srl; $p_args->item_srl = $item->item_srl; $output = executeQuery('resource.getItemSumStars', $p_args); $i_star_args->module_srl = $this->module_srl; $i_star_args->package_srl = $args->package_srl; $i_star_args->item_srl = $args->item_srl; $i_star_args->voted = (int)$output->data->voted; $i_star_args->voter = (int)$output->data->voter; $output = executeQuery('resource.minusItemStar', $i_star_args);
한개는 아이템, 한개는 패키지인데.. 음 아직 이해를 잘 못하겠네요 @_@;
자료실 모듈에 procResourceDeleteComment 펑션을 보면,
1) getPackageSumStars 쿼리를 먼저 실행시키고,
2) minusItemStar 쿼리를 실행시키고 있는데요,
1) getPackageSumStars.xml 파일을 보면,
<query id="getPackageSumStars" action="select"> <tables> <table name="resource_packages" alias="package" /> <table name="resource_items" alias="items" /> <table name="comments" alias="comments" /> </tables> <columns> <column name="count(*)" alias="voter" /> <column name="sum(comments.voted_count)" alias="voted" /> </columns> <conditions> <condition operation="equal" column="package.module_srl" var="module_srl" filter="number" notnull="notnull" pipe="and" /> <condition operation="equal" column="package.package_srl" var="package_srl" filter="number" notnull="notnull" pipe="and" /> <condition operation="equal" column="items.package_srl" default="package.package_srl" filter="number" notnull="notnull" pipe="and" /> <condition operation="equal" column="comments.document_srl" default="items.document_srl" notnull="notnull" pipe="and" /> </conditions> </query>
resource_packages, resource_items, comments 총 3개의 테이블에서,
voter, voted 컬럼을 모두 더해준다는 것 같은데, 정확하게는 잘 모르겠습니다.
2) minusPackageStar.xml 파일을 보면,
<query id="minusPackageStar" action="update"> <tables> <table name="resource_packages" /> </tables> <columns> <column name="voted" var="voted" notnull="notnull" default="0" /> <column name="voter" var="voter" notnull="notnull" default="0" /> </columns> <conditions> <condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" /> <condition operation="equal" column="package_srl" var="package_srl" filter="number" notnull="notnull" pipe="and" /> </conditions> </query>
resource_packages 테이블에서 voted와 voter 컬럼을 대상으로, module_srl과 package_srl이 같은 조건에서
1)의 값을 update 해준다는 것 같긴 한데요. @_@;