묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
안녕하세요~
xe의 외부에서 xe의 내의 document에 삽입하는 연동형식의 게시판을 준비중입니다.
이 문제로 document.controller.php 에 insertDocument 액션을 분석중인데요.
값이 어떻게 얻어지는지 모르는 부분이 있어 질문드립니다.
// 주어진 문서 번호가 없으면 문서 번호 등록
if(!$obj->document_srl) $obj->document_srl = getNextSequence();
이 부분입니다.
document_srl 번호를 매기는 부분인데, getNextSequence() 어떻게 값을 얻어오는건지 모르겠습니다;;
다른 컬럼들은 정해진 값을 쓰면 되겠는데, document_srl은 어찌해야 할지...
function getNextSequence() {
$oDB = &DB::getInstance();
return $oDB->getNextSequence();
}
func.inc.php 를 보니 이렇게 되어있는데; 이걸로는 무슨 값을 얻는건지 모르겠습니다.
getNextSequence()로 검색해보면 중복되지 않는 값을 얻는다고 하는데..
그럼 중복되지만 않으면 xe를 거치지 않고 제 임의로 부여해도 되는건가요?
도움 부탁드립니다.
------------------------------------------------------------------------------------
계속 찾아보니 다음과 같은 사항들을 알게되었는데, 맞는건지 확인 부탁드립니다.
xe_sequence 에서 순차번호를 부여한다는걸 알게되었습니다.
현재 알아낸건 두가지 인데요.
첫번째는 하나의 document를 등록할 때, xe_sequence 테이블에서 2개의 seq를 발급한다는겁니다.
예를 들어 새문서를 저장할 때 100, 101 두개의 seq를 부여해 주었다면
xe_documents 테이블에 documents_srl 컬럼은 100을 받더군요.
두번째는 documnet가 등록되기 전에 file을 업로드하는 경우...
이 때도 이 file에 대한 seq를 두개를 부여하는데 200, 201을 주었다면
200은 xe_files 테이블의 file_srl에 쓰고 201은 upload_target_srl 그리고
현재 작성중인 문서.. 파일이 업로드된 문서를 저장할 때 document_srl 컬럼에 쓰더군요.
이걸 볼 때, xe는 무엇을 등록할 때 두개의 seq를 미리 발급하고
전자를 등록하는 것의 srl로, 후자를 해당 것의 부모가되는 srl로 사용하는거 같습니다.
제가 파악한 것이 맞는지 모르겠습니다;
이게 맞다면 외부에서 xe의 documnets를 삽입할 때는 위와 같은 로직에 맞추면 될까요?
xe 외부에서 document에 삽입
2011.01.20 15:28
안녕하세요~
xe의 외부에서 xe의 내의 document에 삽입하는 연동형식의 게시판을 준비중입니다.
이 문제로 document.controller.php 에 insertDocument 액션을 분석중인데요.
값이 어떻게 얻어지는지 모르는 부분이 있어 질문드립니다.
// 주어진 문서 번호가 없으면 문서 번호 등록
if(!$obj->document_srl) $obj->document_srl = getNextSequence();
이 부분입니다.
document_srl 번호를 매기는 부분인데, getNextSequence() 어떻게 값을 얻어오는건지 모르겠습니다;;
다른 컬럼들은 정해진 값을 쓰면 되겠는데, document_srl은 어찌해야 할지...
function getNextSequence() {
$oDB = &DB::getInstance();
return $oDB->getNextSequence();
}
func.inc.php 를 보니 이렇게 되어있는데; 이걸로는 무슨 값을 얻는건지 모르겠습니다.
getNextSequence()로 검색해보면 중복되지 않는 값을 얻는다고 하는데..
그럼 중복되지만 않으면 xe를 거치지 않고 제 임의로 부여해도 되는건가요?
도움 부탁드립니다.
------------------------------------------------------------------------------------
계속 찾아보니 다음과 같은 사항들을 알게되었는데, 맞는건지 확인 부탁드립니다.
xe_sequence 에서 순차번호를 부여한다는걸 알게되었습니다.
현재 알아낸건 두가지 인데요.
첫번째는 하나의 document를 등록할 때, xe_sequence 테이블에서 2개의 seq를 발급한다는겁니다.
예를 들어 새문서를 저장할 때 100, 101 두개의 seq를 부여해 주었다면
xe_documents 테이블에 documents_srl 컬럼은 100을 받더군요.
두번째는 documnet가 등록되기 전에 file을 업로드하는 경우...
이 때도 이 file에 대한 seq를 두개를 부여하는데 200, 201을 주었다면
200은 xe_files 테이블의 file_srl에 쓰고 201은 upload_target_srl 그리고
현재 작성중인 문서.. 파일이 업로드된 문서를 저장할 때 document_srl 컬럼에 쓰더군요.
이걸 볼 때, xe는 무엇을 등록할 때 두개의 seq를 미리 발급하고
전자를 등록하는 것의 srl로, 후자를 해당 것의 부모가되는 srl로 사용하는거 같습니다.
제가 파악한 것이 맞는지 모르겠습니다;
이게 맞다면 외부에서 xe의 documnets를 삽입할 때는 위와 같은 로직에 맞추면 될까요?
댓글 2
-
라르게덴
2011.01.20 17:02
-
마리모
2011.01.20 17:13
xe와 별도로 asp.net으로 만들어진 사이트를 운용중인데,
(xe와 asp.net 서버는 각각 별도입니다)
이 asp.net에서 일부 게시물을 xe와 연동(저장)시켜야할 필요가 생겼습니다;
php라면 xe모듈을 활용하겠지만 그렇지 못해서.. 직접 xe의 디비에 값을 넣으려고 합니다.
아.. 그리고 답변 감사합니다^^;
여튼 이렇게 asp.net 사이트에서 xe디비로 별도 저장한 게시물은 이후 연동될 필요는 없어서 insert 액션만 취하면 됩니다.
그렇다면 제가 doucumnets, sequence 테이블에 insert 할 때 어떤 규칙을 따르면 될까요?;
아직까지도 정확히 규칙파악이 안되네요;;
--> 리플로 달았다가 레이아웃 때문에 글자가 짤리는 부분이 있어 여기에 씁니다. -
라르게덴
2011.01.20 18:01
DB에 XE에서 처리할 내용 모두 찾아서 넣지말고 http://www.xpressengine.com/18413458 이것 참조하시고 API로 저장시키는 방법을 고민하세요. 게시물은 두개입니다.
다른 하나는 그 문서의 정렬을 위한 번호입니다.
document_srl : 100
list_order : -101
문서에 업데이트를 할때는 update_order로 다시 sequence를 부여합니다.
공지사항으로 선언되면 list_order의 번호가 -210000000 과 같은 무한대의 숫자로 바뀝니다.
XE에서는 정렬이 필요한 대부분의 대상에 정렬번호를 부여하기 때문에 sequence를 두번이상 발생시키는 경우가 많습니다.
외부에서 내부로 저장한다는게 구체적으로 어떻게 저장하신다는거죠?
제가 이해한대로라면 BlogAPI를 이용한 저장방법을 취하면 될 것 같은데 말입니다.