2010-01-05 33 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); 

現在我所做的就是我剛纔添加七號線單一的狀況(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查詢實際上將列添加到結果集?這很奇怪。 – 2010-01-05 21:44:19