2010-01-05 3 views
0

확인. 선택의 작품이 버전 : 이제도움말 검색어 선택 ZF

$select = $this->select(); 
    $select->setIntegrityCheck(false); 
    $select->from(array('u' => $this->_name), 
        array('u.id', 'u.username', 'u.avatar_path', 
         '(SELECT COUNT(*) FROM media WHERE user_id = u.id) media_count')); 
    $where = "u.status = 'active' AND u.avatar_path <> 'images/photo-thumb.gif' AND u.show_on_homepage = 1"; 
    $where .= " AND (u.status_message IS NOT NULL OR u.profile_theme_id IS NOT NULL)"; 
    $select->where($where); 
    return $this->fetchAll($select); 

내가 무슨 짓을 그냥 7 번째 줄에 하나의 조건을 추가했다 (MEDIA_COUNT> 0) 그래서 다음과 같습니다

$select = $this->select(); 
    $select->setIntegrityCheck(false); 
    $select->from(array('u' => $this->_name), 
        array('u.id', 'u.username', 'u.avatar_path', 
         '(SELECT COUNT(*) FROM media WHERE user_id = u.id) media_count')); 
    $where = "u.status = 'active' AND u.avatar_path <> 'images/photo-thumb.gif' AND u.show_on_homepage = 1"; 
    $where .= " AND (u.status_message IS NOT NULL OR u.profile_theme_id IS NOT NULL OR media_count > 0)"; 
    $select->where($where); 
    return $this->fetchAll($select); 

을 그리고 이것은 이미 아무튼 작동하지 않고 오류가 발생합니다.

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'm.media_count' in 'where clause' 

상태를 제거하면 작동하지 않습니다. 나는 또한 성공없이 u.media_count를 사용하여 시도했다.

편집 : media_count 값이 작동합니다. 조건 (media_count> 0)을 빠뜨린 다음 결과 세트에서 var_dump를 수행했으며 media_count 키가 올바른 값을 가진 배열에 있습니다.

EDIT2 : 위의 선택을 단순화했습니다 (중요하지 않은 행을 제거했습니다).

답변

2

저는 zend-framework에 익숙하지 않지만 media_count가 테이블의 실제 열이 아니라는 것이 문제라고 생각합니다.

(SELECT COUNT(*) FROM media WHERE user_id = u.id) > 0 
+0

감사와

media_count > 0 

를 교체하십시오. 하지만 subselect 쿼리 실제로 결과 집합에 열을 추가한다고 생각? 그거 이상 하네. –