별점 댓글 쓸 땐 별점을 선택해서 하니깐 추가할 별점을 바로 알 수가 있는데,

지울려니깐.. 몇점을 지워야 할지를 디비에서 추출해내기가 좀 더 까다롭군요. -_-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);

 

한개는 아이템, 한개는 패키지인데.. 음 아직 이해를 잘 못하겠네요 @[email protected];

 

자료실 모듈에 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 해준다는 것 같긴 한데요. @[email protected];

 

글쓴이 이온디

profile
# XE/라이믹스 단톡방을 운영 중입니다. (비번: 2022)
https://open.kakao.com/o/giaKKnl

# XE/라이믹스 생활코딩 모듈 강좌입니다.
https://opentutorials.org/module/3774