2010-11-23 2 views
0

저는 현재 Zend의 Table 객체에서 내 쿼리를 실행하고 반환 값으로 Rowset을 얻는 방법을 고민하고 있습니다. 이유는 내가 필요한 이유는 기존 프로젝트의 코드를 수정하고 유연성이 많지 않기 때문입니다.테이블에서 하위 쿼리를 사용하여 쿼리를 실행하고 Zend에서 결과로 행 집합 개체를 가져 오는 방법은 무엇입니까?

검색어 :

SELECT * 
     FROM `tblname` ud 
    WHERE ud.user_id = some_id 
     AND 
     (
      (ud.reputation_level > 1) 
      OR 
      (
       (SELECT COUNT(*) 
        FROM `tblname` t 
       WHERE t.user_id = ud.user_id 
        AND t.category_id <=> ud.category_id 
        AND t.city_id <=> ud.city_id 
       ) = 1 
      ) 
     ) 

객체 선택를 사용하여이 쿼리를 설명 할 수있는 방법이 있나요?

이전 SQL 솔루션은 매우 간단 한 구성 WHERE 절 :

나는 (그것이 기존의 코드에 의해 처리 될 수 있도록)하지만 더 복잡한 쿼리에 대한 결과의 동일한 유형을 생성 할 필요가
$where = $this->getAdapter()->quoteInto("user_id = ?",$user_id); 
return $this->fetchAll($where); 

.

것들 내가

$db = Zend_Db_Table::getDefaultAdapter(); 
return $db->query($sql)->fetchAll(); 
---------------- OR ---------------------- 
return $this->fetchAll($select); 
---------------- OR ---------------------- 
return $this->_db->query($sql)->fetchAll(); 

을 시도했다 그러나 그들은 하나가 아닌 객체의 배열을 생산하거나 리티 위반 메시지와 함께 실패합니다.

Zend에서 SQL 텍스트 쿼리를 처리하는 방법에 대한 도움을 주시면 감사하겠습니다. 모든 가져 오기 모드 목록은

답변

1
$dbAdapter = Zend_Db_Table::getDefaultAdapter(); 

//change the fetch mode becouse you don't like the array 
$dbAdapter->setFetchMode(Zend_Db::FETCH_OBJ); 

$sql = "you're long sql here"; 
$result = $dbAdapter->fetchAll($sql); 
Zend_Debug::dump($result); 
exit; 

Zend_Db_Slect

보면, 당신은 쿼리 대신 수동 문자열 Zend_Db_Select를 사용하고 작성하려면 Zend_Db_Adapter

로 이동

관련 문제