行。此版本的选择有效:
$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,并且 key media_count 在数组中具有正确的值。
EDIT2:我已经简化了上面的选择(我已经删除了不重要的行)。