* User ID : leesungmin
* Homepage : https://4880.net
* Email : imadonis@naver.com
* Following : 랩퍼투혼 whom the member is following.
* Following Count : 1people
* Followed by : 랩퍼투혼, 탑돌이 ... now follwing this member.
* Followed Count : 2people

< 빌립보서 4장 13절>
내가 주 안에서 크게 기뻐함은 너희가 나를 생각하던 것이 이제 다시 싹이 남이니 너희가 또한 이를 위하여 생각은 하였으나 기회가 없었느니라 ! 내가 궁핍하므로 말하는 것이 아니니라! 어떠한 형편에든지 나는 자족하기를 배웠노니 나는 비천에 처할 줄도 알고 풍부에 처할 줄도 알아 모든 일 곧 배부름과 배고픔과 풍부와 궁핍에도 처할 줄 아는 일체의 비결을 배웠노라! 내게 능력 주시는 자 안에서 내가 모든 것을 할 수 있느니라 !

* Document Count : 17511
* Comment Count : 82
* Document Count : 36
* Document Count : 115
* Comment Count : 123
* Document Count : 2
* Comment Count : 2
* Document Count : 1
* Comment Count : -1

CMS

  • List
  • Down
  • Up
  • Write
  • Search

XE코어 XML 쿼리 언어

부운영자 부운영자
68 0 0

XML 쿼리 언어

 

XML Query Language

 

SMaker님의 글을 전문인용하여 재구성하였다. - http://xe.xpressengine.net/wiki/18180631

  • 개요
  • 쿼리 사용방법
  • XML sample
  • Select query 예제
  • Join Select 예제
  • Letf Join Select 예제
  • Insert 예제
  • update 예제
  • delete 예제
  • Select Click Count 예제

 

개요

  • XpressEngine는 SQL 쿼리를 그대로 사용하지 않고 XML로 작성합니다.
  • 이는 다양한 DBMS를 지원하기 위해서입니다.
  • XML Query문의 확장자는 .xml 입니다.

edit쿼리 사용방법

XML 쿼리는 모듈과 애드온, 위젯 등에서 다음과 같이 사용할 수 있습니다.

XML Query를 호출하여 실제 DB의 데이터를 받거나 조작하기 위해서 사용되는 executeQuery() 함수는 DB::executeQuery() 함수의 별칭(alias)입니다.

이 함수는 실제 DB 데이터를 조작하고 사용된 DB에 따라 XML 쿼리가 네이티브 SQL로 파싱된 후에 결과를 수신합니다.

첫번째 파라미터는 실행하고자 하는 XML 쿼리의 이름입니다. 이름은 모듈이나 위젯, 애드온에 따라 다음과 같이 사용합니다.

  • 모듈에서 XML Query를 실행하고자 하는 경우 - 모듈이름.쿼리ID   
  • ex) $output = executeQuery('communication.getMessage',$args, $columnList);
  • 위젯에서 XML Query를 실행하고자 하는 경우 - widgets.위젯이름.쿼리ID
  • ex) $output = executeQueryArray('widgets.content.getMids', $obj);
  • 애드온에서 XML Query를 실행하고자 하는 경우 - addons.애드온이름.쿼리ID ex)
  • $output = executeQueryArray('addons.piclens.getFileList', $obj);

두번째 파라미터 $args는 널(null)이 될 수도 있고 해당 XML Query에서 필요시 stdClass의 variables type으로 변수의 key, value를 설정 후 데이터를 쿼리에 전달하는데 사용됩니다.

결과는 Object class의 객체로 반환(return) 됩니다.

  • 쿼리가 실패했다면 $output->toBool()이 FALSE 일 경우이고, TRUE이면 쿼리는 정상적으로 실행이 된 것을 의미합니다.
  • select문의 결과 데이터는 $ouptut->data 변수에 담겨져 return 됩니다.

editXML 쿼리 예제(sample)

▶ 쿼리ID.xml

editXML 쿼리 요소와 속성

XML 쿼리에 사용되는 XML 요소와 속성은 다음과 같습니다.

▶ <query> - 쿼리 XML의 최상위 요소

  • id : 쿼리를 찾을 수 있는 아이디입니다. module.query_id를 사용해서 쿼리 XML 파일을 검색하고 사용합니다.
  • action : 액션은 select, update, delete, insert 4가지 타입입니다.

▶ <tables> - 쿼리에 사용될 테이블의 모음

  • <table> : 테이블 요소, 테이블 조인 시 여러 개의 <table>을 사용할 수 있습니다.
  • name : 원 테이블 명 (XE에서의 테이블 머릿말(접두어) prefix_는 무시)
  • alias : 열 지정이나 검색 등에서 사용할 테이블 별칭, join 또는 다른 용도로 원 테이블 명을 바꾸어 사용할 경우

▶ <columns> - 쿼리에 사용될 열 모음

  • <column> : 열 요소, 처리하고자 하는 컬럼명을 입력하시면 됩니다.
  • name : 열 이름(컬럼명)
  • alias : 원래 열의 이름을 변경할 때 사용(다른 이름으로 바꾸어 결과를 만들고자 할 경우 지정)

▶ <conditions> - 조건문을 만들 때 사용

  • 조건절을 구성합니다.
  • 조건절을 여러 개의 그룹으로 사용하고자 할 때에는 <group> 태그를 이용해 묶어 주실 수 있습니다.

▶ <group> ... </group> - 조건 그룹

  • 조건문을 그룹으로 사용할 경우 pipe="and|or" 을 이용하여 그룹끼리의 조건을 지정할 수 있습니다.

▶ <column> - 조건문

▶ <navigation> - navigation은 정렬 순서(order by) 또는 페이징 기능을 지원합니다.

▶ <groups> - 조건문에 따라 그룹을 사용할 수 있게 합니다.(group by 절 사용시 작성)

  • <group> 그룹핑할 컬럼을 지정할 수 있습니다.
  • column : 그룹핑할 컬럼명 지정(group by 기준 열 이름)

editSelect query 예제

member.getMemberList : member테이블에서 특정 조건을 가진 회원들을 페이징을 하면서 select

document.getMonthlyArchivedList : 모듈을 '년월'일을 기준으로 group by 한 결과를 가져옴

editJoin Select 예제

document.getTrashList 예제입니다.

editLetf Join Select 예제

editInsert 예제

document.insertCategory : 문서 카테고리 추가

editupdate 예제

document.updateCategory : 특정 카테고리의 제목이나 순서, 최근 수정일을 변경

editdelete 예제

document.deleteCategory : 특정 카테고리를 삭제

editSelect Click Count 예제

Select 시 조회수 등의 정수의 숫자 컬럼을 +1 하는 기능입니다. Cubrid의 경우에는 incr()이라는 함수를 사용하고 다른 데이타베이스의 경우 해당 컬럼을 Select후 Update 합니다.

document.getDocument XML Query에 Click Count 를 적용해 본 예제입니다. select시 정수 숫자 컬럼 node에 attribute는 click_count, 값은 Argument로 매핑되는 변수명을 기입합니다.

click_count 의 매핑변수 값이 true이면 해당 컬럼을 +1 증가합니다.

 

$args->document_srl = $this->document_srl;
$args->incr_readed_count = true;
$output = executeQuery('document.getDocument', $args);

,,,

 

부운영자 부운영자
93 Lv. 785830/795240P

< 빌립보서 4장 13절>
내가 주 안에서 크게 기뻐함은 너희가 나를 생각하던 것이 이제 다시 싹이 남이니 너희가 또한 이를 위하여 생각은 하였으나 기회가 없었느니라 ! 내가 궁핍하므로 말하는 것이 아니니라! 어떠한 형편에든지 나는 자족하기를 배웠노니 나는 비천에 처할 줄도 알고 풍부에 처할 줄도 알아 모든 일 곧 배부름과 배고픔과 풍부와 궁핍에도 처할 줄 아는 일체의 비결을 배웠노라! 내게 능력 주시는 자 안에서 내가 모든 것을 할 수 있느니라 !

ReportShareScrap

Comment 0

Comment Write
WYSIWYG

Report

"님의 댓글"

Are you sure you want to report this comment?

Comment Delete

"님의 댓글"

I want to Are you sure you want to delete?

Share

Permalink
  • XML 쿼리 언어
    부운영자 Views 68 20.08.12.23:59
    XML 쿼리 언어 XML Query Language SMaker님의 글을 전문인용하여 재구성하였다. - http://xe.xpressengine.net/wiki/18180631 개요 쿼리 사용방법 XML sample Select query 예제 Join Select 예제 Letf Join Select ...
  • XE 템플릿 문법
    부운영자 Views 35 20.08.12.23:56
    XE 템플릿 문법의 이해 기본 문법 default 파일 포함 include 조건문 IF 반복문 loop
  • 유용한 함수들
    부운영자 Views 41 20.08.12.23:55
    getUrl() logged_info
  • 클래스 친구들
    부운영자 Views 47 20.08.12.23:54
    클래스 친구들 Object.class.php Context.class.php
  • 설정을 위한 2개의 문서
    환경설정 config.inc.php 함수라이브러리 func.inc.php
  • Context의 이해
    부운영자 Views 37 20.08.12.23:53
    Understanding of Context Context는 사전적 의미로 (어떤 일의) 맥락, 전후 사정을 뜻한다. 즉 어떤 글이 있다면 글의 맥락, 문맥이라는 뜻이기도 하다. 컴퓨터에서는 이것을 상황 정보라고도 표현한다. 쉽게 말해서...
  • xe의 시작페이지 index.php
    XE코어의 index.php는 무척 간단한 몇 줄의 PHP 구문으로 작성되어 있다. 하지만 index.php는 XE 전반에 걸쳐 가장 중요한 문서이다. 왜냐하면 XE가 기본적으로 사용하는 class파일을 모두 include(포함)한다. requir...
  • 클래스의 정의 Class
    클래스의 정의 Class 교과명 xe 코어 교사명 수업일시 능력단위 xe처럼 생각하고 말하기 교재쪽 평가방법 능력단위요소 최종 수업목표 세부 수업목표 필요 장비 /재료 단계 학습활동 학습내용 메모 학습내용 XE는 객...
  • XE 동작 순서
    부운영자 Views 34 20.08.12.23:48
    XpressEngine의 동작 순서 교과명 XE코어 교사명 수업일시 능력단위 교재쪽 평가방법 능력단위요소 최종 수업목표 세부 수업목표 필요 장비 /재료 단계 학습활동 학습내용 메모 학습내용 XE는 요청을 받고 이에 대한 ...
  • xe 코어
    부운영자 Views 33 20.08.12.23:45
    xe 코어
  • xe 노트 소개
    부운영자 Views 14 20.08.12.23:43
    XE 코어의 이해를 위한 XE스쿨 학습 노트 XE코어를 살펴보는 것은 XE Core를 수정하거나 변경하기 위해서 공부하는 것이 아니다. XE코어가 생각하고 행동하는 방법을 유심히 살펴보는 것이고 작성된 코드의 내용을 한...
  • XE 노트
    부운영자 Views 15 20.08.12.23:40
    xe 노트 소개 xe 코어 xe 모듈 xe 애드온 xe 위젯
  • Chrome Console SameSite Cookie Attribute Warning Is anybody else getting this Chrome console warning? A cookie associated with a cross-site resource at was set without the SameSite attribute. A future ...
  • 리눅스 쉘스크립트, Crontab을 이용한 자동백업 따라해보기 Ubuntu 백업 스크립트 작성하기 아래 설명글은 Ubuntu 뿐만 아니라 모든 Linux 배포판에 대해서 공통적으로 실행가능합니다. 서버를 운영하면서, 백업과 보...
  • 부운영자 Views 52 20.07.15.22:08
    rhymix/rhymix-docs Rhymix Official Documentation. Contribute to rhymix/rhymix-docs development by creating an account on GitHub. GitHub
  • 오류 좀 봐주세요!!
    mmm 이걸 해결 못하고 있네요...ㅜㅜ jQuery(function($) { if(viewer_option < 1 && viewer_srl.length < 1 && viewer_ext.length < 1 && viewer_url.length < 1) return; var srl = viewer_srl.split(' | '); var e...
  • 빌어먹을 로봇 퇴치하기 =>SemrushBot 일반적으로 로봇을 차단하는데 robots.txt를 이용합니다. 하지만 robots.txt 규칙을 무시하는 빌어먹을(??) 봇들이 많습니다. .htaccess를 이용하는 방법도 있습니다. https://g...
  • 라이믹스는 보안상 모듈 폴더 아래에 있는 xml 파일에 직접 접근하는 것을 막고 있습니다. 에디터 컴포넌트에서 xml 파일에 직접 접근할 필요가 있다면 .htaccess 파일 4번째 줄의 내용을 RewriteCond %{REQUEST_URI}...
  • 가생이닷컴 > 공지사항 > 크롬 사용시 로그인 풀림 현상 한국에 대한 해외반응 한류팬반응 일본반응 중국반응 한류영상등 번역 gasengi.com
  • 파도타기 스크립트[ 프로모에 위치]
    <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>파도타기시작 </title> <style type="text/css"> .wave_document{background: #53FF4C; width: 100px; height: 30px; border: 1px solid #CC...