2013-03-07 1 views
-1

현재 필자가 작성한 특정 쿼리에 대해 두 가지 모델 관련 개선 사항을 살펴보고 있습니다.Zend_D 마법 메서드 특정 셀 선택

$queryGetPages = $this->fetchAll($this->select() 
         ->where('page_active = ?', (int) $active) 
         ->order('page_rank ASC')); 

if($queryGetPages) { 
    $queryGetPages = $queryGetPages->toArray(); 

    foreach($queryGetPages as $key => $value) { 
     $queryGetPagePrint = $this->find($value['pageid']) 
     ->current() 
     ->findModule_Model_ModulePagesPrintsViaModule_Model_ModulePagesFuses(
                  $this->select() 
                  ->from('module_pages_prints', array('print_title'))        
                  ->where('fuse_locale = ?', $this->_toolbox['editor']['translation'])) 
    }              
} 

문제는 관련 테이블에서 데이터를 요청하는 마법 방법에 있습니다. 행당 '제목'셀만 필요하지만 웬일인지 나를 알려주지는 않습니다. 이 쿼리를 사용하더라도 행의 모든 ​​셀을 반환합니다. 내가 잘못하고있는 것을하고있다. 그러나 무엇이 있는지 전혀 모른다!

누군가 내가 올바른 방향으로 나를 가리킬 수 있다면, 나는 매우 감사 할 것입니다.

감사합니다.

+1

는'findModule_Model_ModulePagesPrintsViaModule_Model_ModulePagesFuses'는 내가 지금까지 본 적이 힘겨운 함수 이름 난 정말 당신이 본 적이하든 상관하지 말아. 나는 여기에 몇 가지 버그를 고치려고 노력하고있다 ... – mingos

+0

@mingos :

$queryGetPagePrint = $this->select() ->from(array('p' => 'module_pages_prints'), array('print_title')) ->join(array('f' => 'module_pages_fuses'),'p.pageid = f.pageid',array()) ->where('f.fuse_locale = ?', $this->_toolbox['editor']['translation']) ->where('p.pageid = ?', $value['pageid']); 
wpoortman

+3

아, 태도를 가진 질문자! "나는 네가 본 것을 좋아하지 않는다. 내 대답을 말해 준다. 나는 그것을 처신한다." 니스, 정말 잘됐다. 나는 해결책을 제시하겠다는 의도로이 문제를 조사하고 있었지만 방금 마음을 바꿨습니다. – mingos

답변

1

귀하의 경우 암묵적으로 호출되는 함수는 findManyToManyRowset()입니다 (Zend/Db/Table/Row/Abstract.php의 줄, 1001-1108 줄 (ZF 1.12.1 기준). 줄 1070 -1072 : 한마디로

$select->from(array('i' => $interName), array(), $interSchema) 
    ->joinInner(array('m' => $matchName), $joinCond, Zend_Db_Select::SQL_WILDCARD, $matchSchema) 
    ->setIntegrityCheck(false); 

:.. 당신의 from() 전화를 덮어 종속 테이블 (module_pages_fuses)에서 모든 행을 선택합니다 호출되는 기능이 작동하도록 설계 방법입니다

대신에, 나는 당신이 실제로 "멍청한"방법을 필요로하는 질문을 작성하는 것이 좋습니다. 예 :

D
+0

사실, 나는 '멍청한'방식의 하하를 열렬히 좋아하지 않는다. 이전과 거의 똑같은 질의를 시도했지만 더러운 경우에는 약간의 (비록 함수 이름 = D가 없다고하더라도). 이걸 조금 더 깊이 들여다 보겠습니다. 문제는 지금 당장 열어 두십시오. 감사합니다 – wpoortman

+1

"더러운"또는 보일지도 모르지만 내 개인적인 견해는 실제로 lng 클래스 이름으로 구성된 비밀 함수 이름보다 읽기 쉽다는 것입니다. 게다가'__call'과 다른 마법 메서드를 사용하지 않기 때문에 IDE는 여러분이하는 일 (코드 완성, 리턴 타입 검사, 정확성 검사)을 더 잘 알 수 있습니다. 그건 내 개인 의견이야. – mingos