개발하다가 그지같은 버그는 두가지와 같다.
1) 또한 act명은 굉장히 자주 충돌이 나거나 동작이 안된다. 대부분은 그 모듈을 포함하는 글자와 Admin이라는 단어가 있어야 동작하는것으로 보인다. 여러가지 이름을 해보고 충돌이 나지않는 이름으로 act를 주어야한다.
2) xml 스키마없이 update하려고 하면 100% 안된다 (숫자는 된다)
스키마를 해놔도 안되는 경우가 빈번하다.
따라서 가끔은 db에 직접접근해야한다.
//여기는 php를 이용해서 바로 접근하는것. 인코딩문제가 있을수 있다. require $_SERVER['DOCUMENT_ROOT']."/files/config/db.config.php"; $conn = mysql_connect($db_info->master_db['db_hostname'],$db_info->master_db['db_userid'],$db_info->master_db['db_password'])or die(mysql_error()); $selc = mysql_select_db($db_info->master_db['db_database'],$conn); $q = "SELECT v.module_srl, v.document_srl, d.title, d.nick_name, MAX(IF(eid='lat',value,null)) AS lat, MAX(IF(eid='lng',value,null)) AS lng FROM ct_document_extra_vars v, ct_documents d WHERE v.document_srl = d.document_srl AND v.module_srl = d.module_srl GROUP BY document_srl"; $result = mysql_query($q,$conn); $rows = mysql_fetch_array($result); while($row = mysql_fetch_array($result)){ debugPrint($row); } //여기는 xe만에서 쓰이는 쿼리문을 이용한 것. xml을 굳이 쓰지않고 복잡한 쿼리를 날릴수있다. //아래 보이는 max라든지 하는건, 피벗테이블을 위한것이다. (Pivot Table..궁금하면 오백원) $oDB = &DB::getInstance(); $query = $oDB->_query("SELECT v.module_srl, v.document_srl, d.title, d.nick_name, MAX(IF(eid='lat',value,null)) AS lat, MAX(IF(eid='lng',value,null)) AS lng FROM ct_document_extra_vars v, ct_documents d WHERE v.document_srl = d.document_srl AND v.module_srl = d.module_srl GROUP BY document_srl"); $result = $oDB->_fetch($query); Context::set('locations', $result);
이렇게 접근하면 직접접근하는거라 조금은 어긋나지만 어쩔수가 없다.
어쨌든 mysql구문을 통해 직접 접근하는건 귀찮은 인코딩문제가 있을수 있기 때문에 제외하고 (xe를 통하면 인코딩을 알아서 설정한다.)
위의 예제는 피봇테이블을 접근하는 방법이다.
참고할만한 답변이 단 한가지가 계속 구글에 검색되는데,
http://www.xpressengine.com/forum/22610303
아무리 말해도 안고쳐주나보다+
스키마는 꼭 고치고 캐쉬파일 재생성을 한다
'웹 & 프레임워크' 카테고리의 다른 글
현재 노드 카피하기 (0) | 2014.08.05 |
---|---|
[xe] 자꾸 배열에서 하나만 가져올때 (0) | 2014.08.01 |
[xe]3시간이나 허비한 admin 버그 (0) | 2014.07.27 |
[xe] procFilter (0) | 2014.07.26 |
[xe]그래서 이걸 뷰에서 바으려면 (0) | 2014.07.22 |