Zend framework 基于不同列值的MySQL计数id

Zend framework 基于不同列值的MySQL计数id,zend-framework,Zend Framework,嘿,我想统计与联接表中的列rt.x_类型无关的所有ID(这是alias ACTUAL_条目)。我使用zend框架。这是我的全部ORM查询 $columns = array( 'EV.id as EVENT_ID', 'EV.name as EVENT_NAME', 'DATE_FORMAT(CONVERT_TZ(FROM_UNIXTIME(EV.start_time), "UTC", LO.time_zone), "%m/%e/%Y %a %r") as EVENT_START_DA

嘿,我想统计与联接表中的列rt.x_类型无关的所有ID(这是alias ACTUAL_条目)。我使用zend框架。这是我的全部ORM查询

$columns = array(
  'EV.id as EVENT_ID',
  'EV.name as EVENT_NAME',
  'DATE_FORMAT(CONVERT_TZ(FROM_UNIXTIME(EV.start_time), "UTC", LO.time_zone), "%m/%e/%Y %a %r") as EVENT_START_DATE',
  'LO.time_zone as TIME_ZONE',
  'coalesce(EV.expected_entry, "") as EXPECTED_ENTRIES',
  $db->quoteInto('count(if(RT.x_type NOT IN ("CREDIT","EXTERNAL"),EN.id,0)) AS ACTUAL_ENTRIES'),
  $db->quoteInto('sum(IF(EN.type != ?, 1, 0)) AS ACTUAL_ATHLETES', Entry::ENTRY_TYPE_TEAM),
  $db->quoteInto('sum(IF(EN.type = ?, 1, 0)) AS ACTUAL_TEAMS', Entry::ENTRY_TYPE_TEAM),
  'coalesce(T.name,"") as TIMER_NAME',
  'coalesce(T.phone, "") as TIMER_PHONE',
  'coalesce(T.sales_region, "") as SALES_REGION'
);

$rows = $this->_readonlydb->select()
  ->from(array('EV' => 'event'),'')
  ->join(array('LO' => 'location'),'EV.location_id = LO.id','')
  ->joinLeft(array('RT'  => 'reg_transaction'), 
                   "RT.event_id = EV.id AND
                    (RT.is_test = 0 OR RT.is_test IS NULL) AND 
                    RT.x_response_code = " . RegTransaction::RESPONSE_CODE_SUCCESS . "", '')
  ->joinLeft(array('EN' => 'entry'), 'EN.trans_id = RT.id', '')
  ->joinLeft(array('T'  => 'organization'), 'T.id = EV.timer_id', '')
  ->where('EV.is_test_event = ?', 0)
  ->where("EN.status NOT IN (?)",   array(Entry::ENTRY_STATUS_WITHDRAWN, Entry::ENTRY_STATUS_NEW))
  ->where('YEARWEEK(FROM_UNIXTIME(EV.start_time), 3) = ?', date("YW"))
  ->group('EV.id')
  ->columns($columns)
  ->query()
  ->fetchAll()
;
重要的部分是

 $db->quoteInto('count(if(RT.x_type NOT IN ("CREDIT","EXTERNAL"),EN.id,0)) AS ACTUAL_ENTRIES'),

这不管用。有人能给我一些建议吗

您开发了SQL查询吗?如果是的话,请给出它。虽然这个代码片段是受欢迎的,并且可能会提供一些帮助,但它将是如何以及为什么解决这个问题的。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。
 You can use zf2 expression.
  new \Zend\Db\Sql\Expression( 'count(if(RT.x_type NOT IN ("CREDIT","EXTERNAL"),EN.id,0)) AS ACTUAL_ENTRIES')
 It works for me in zf2