특정 게시판 카테고리 목록만 뽑고 싶어서 소스를 뒤져보니 getCategoryList라는 함수가 있길래 그걸 썼더니 안 되네요.

소스는 다음과 같습니다.

 

{@
$list = executeQuery('document.getCategoryList', '113')->data;
print_r($list);
}

 

(113이 게시판 번호(module_srl)입니다.)

 

위 소스를 layout.html 중간쯤에 넣었습니다.

 

결과를 print_r로 출력하려고 봤더니 아무것도 안 나오네요. (rx_document_categories 테이블에는 module_srl이 113으로 등록된 카테고리가 있습니다.)

 

제가 뭘 잘못한 걸까요? 아니면 다른 방법이 있는지 알고 싶습니다.

 

  • profile

    {@
    $args = new stdClass;
    $args->module_srl = '113';
    $list = executeQuery('document.getCategoryList', $args)->data;
    print_r($list);
    }

     

    호출하는 쿼리의 condition 값이 var가 module_srl 이고, 실제로 해당 값을 넣을때 var키값을 포함한 "오브젝트" 형식으로 만들어서 변수를 넘겨야 합니다.

  • profile ?

    그대로 하니 됐습니다! 정말 감사합니다. 큰 도움이 되었습니다. 오브젝트 형식으로 넣어야 되는 줄은 몰랐네요.

  • ? profile

    라이믹스라면 간단한 쿼리는 $args를 만들지 않고 배열을 써도 됩니다.

    $list = executeQueryArray('document.getCategoryList', ['module_srl' => 113])->data;

    executeQuery는 카테고리가 1개밖에 없을 경우 배열이 아니라 오브젝트로 나오고, 0개라면 그냥 null이 되어 버리기 때문에 카테고리 목록을 처리하는 부분에서 오류를 유발할 수 있습니다. 특히 PHP 8은 자료형 구분이나 null 처리에 무척 민감하죠. 만약 foreach 같은 루프 문법을 사용하실 예정이라면, 결과가 항상 배열로 나오는 executeQueryArray를 사용하는 것이 안전합니다.

  • profile ?
    아 배열로도 뽑을 수 있었군요. 어차피 foreach를 돌릴 예정이었으니 이 방법이 더 좋겠네요. 좋은 팁 감사합니다!