2010-01-05 2 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 без успеха.

EDIT: значение media_count работает. Я отключил условие (media_count> 0), а затем я сделал var_dump в результирующем наборе, а ключ media_count находится в массиве с правильным значением.

EDIT2: Я упростил выбор выше (я удалил несущественные строки).

ответ

2

Я не знаком с zend-каркасом, но я думаю, проблема в том, что media_count не является фактическим столбцом таблицы. Попробуйте заменить

media_count > 0 

с

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

Спасибо. Но я думал, что запросы подзаголовка фактически добавляют столбцы в результирующий набор? Странно. –

Смежные вопросы