질문/조언팁/리소스 공유

정의 위치

  • ./config/func.inc.php

정의 내용

/**
 * The alias of DB::executeQuery()
 *
 * @see DB::executeQuery()
 * @param string $query_id (module name.query XML file)
 * @param object $args values of args object
 * @param string[] $arg_columns Column list
 * @return object Query result data
 */
function executeQuery($query_id, $args = NULL, $arg_columns = NULL)
{
    $oDB = DB::getInstance();
    return $oDB->executeQuery($query_id, $args, $arg_columns);
}

 

용도

  • XML 로 정의된 쿼리를 실행하고 그 결과를 반환 합니다.
  • ./classes/db/db.class.php 에 정의된 DB::executeQuery() 를 실행합니다.
  • executeQuery()->data 로 반환되는 값은 배열(array)이거나 배열이 아닙니다. 참고로 executeQueryArray 는 항상 배열로 값을 반환합니다.

파라메터

  • string $query_id : 고유한 쿼리를 구분할 수 있는 값 입니다.
    • module.queryname 의 형식을 가지고 있습니다.
      • 예를 들어 ./modules/board/queries/getBoardList.xml 에 정의된 getBoardList 쿼리를 실행할 경우, board.getBoardList 가 됩니다.
    • 애드온이나 위젯의 경우 widgets.widgetname.queryname 와 같은 형식을 취합니다.
      • 예를 들어 ./widgets/content/queries/getMids.xml 에 정의된 getMids 쿼리를 실행할 경우, widgets.content.getMids 가 됩니다.
      • 애드온에서의 사용은 anonymous_biology.zip 의 34번째 줄이 예시가 될 수 있습니다. ./addons/annonymous_biology/queries/updatedocuments.xml 에 정의된 updatedocuments 를 실행하려면 addons.anonymous_biology.updatedocuments 가 됩니다.
  • array|object $args : 쿼리 XML에서 입력 값으로 정의된 값들을 전달합니다.
  • array $arg_columns : 쿼리 실행 결과로 가져올 컬럼 목록입니다.

예시

  1. ./modules/files/file.admin.model.php 에 정의된 getFileList() 메소드
    • // Execute the file.getFileList query
      		$output = executeQuery('file.getFileList', $args, $columnList);
      		// Return if no result or an error occurs
      		if(!$output->toBool()||!count($output->data)) return $output;

       
  2. ./modules/menu/menu.admin.php 에 정의된 addMenu() 메소드
    • /**
      		 * Add a menu
      		 *
      		 * @param string $title
      		 * @param int $siteSrl
      		 * @return Object If success, it contains menuSrl
      		 */
      		public function addMenu($title, $siteSrl = 0)
      		{
      		$args = new stdClass();
      		$args->site_srl = $siteSrl;
      		$args->title = $title;
      		
      		$args->menu_srl = getNextSequence();
      		$args->listorder = $args->menu_srl * -1;
      		
      		$output = executeQuery('menu.insertMenu', $args);
      		if(!$output->toBool())
      		{
      		return $output;
      		}
      		
      		$output->add('menuSrl', $args->menu_srl);
      		return $output;
      		}
  3. ./widgets/content/content.class.php 에 정의된 proc($args) 메소드 중
    • $obj = new stdClass();
      		// Apply to all modules in the site if a target module is not specified
      		if(!$args->module_srls)
      		{
      		$obj->site_srl = (int)$site_module_info->site_srl;
      		$output = executeQueryArray('widgets.content.getMids', $obj);
      		if($output->data)
      		{
      		foreach($output->data as $key => $val)
      		{
      		$args->modules_info[$val->mid] = $val;
      		$args->module_srls_info[$val->module_srl] = $val;
      		$args->mid_lists[$val->module_srl] = $val->mid;
      		$module_srls[] = $val->module_srl;
      		}
      		}

       
  4. XE Core에서 주로 사용된 곳
    • '주로' 사용된 곳을 가리기 어려울 정도로 많은 부분에 사용되었습니다.
Atachment
첨부

글쓴이 misol

?
사회에 긍정적인 영향을 끼치는 사람으로 살고 싶습니다.

서버에 요청 중입니다. 잠시만 기다려 주십시오...