首页 > 代码库 > cakephp中使用 find('count')方法
cakephp中使用 find('count')方法
对于find(‘count‘,array(‘group‘=>‘user_id‘));
Model.php中这样描述:
1 /** 2 * Handles the before/after filter logic for find(‘count‘) operations. Only called by Model::find(). 3 * 4 * @param string $state Either "before" or "after" 5 * @param array $query 6 * @param array $results 7 * @return integer The number of records found, or false 8 * @see Model::find() 9 */10 protected function _findCount($state, $query, $results = array()) {11 if ($state === ‘before‘) {12 if (!empty($query[‘type‘]) && isset($this->findMethods[$query[‘type‘]]) && $query[‘type‘] !== ‘count‘) {13 $query[‘operation‘] = ‘count‘;14 $query = $this->{‘_find‘ . ucfirst($query[‘type‘])}(‘before‘, $query);15 }16 17 $db = $this->getDataSource();18 $query[‘order‘] = false;19 if (!method_exists($db, ‘calculate‘)) {20 return $query;21 }22 23 if (!empty($query[‘fields‘]) && is_array($query[‘fields‘])) {24 if (!preg_match(‘/^count/i‘, current($query[‘fields‘]))) {25 unset($query[‘fields‘]);26 }27 }28 29 if (empty($query[‘fields‘])) {30 $query[‘fields‘] = $db->calculate($this, ‘count‘);31 } elseif (method_exists($db, ‘expression‘) && is_string($query[‘fields‘]) && !preg_match(‘/count/i‘, $query[‘fields‘])) {32 $query[‘fields‘] = $db->calculate($this, ‘count‘, array(33 $db->expression($query[‘fields‘]), ‘count‘34 ));35 }36 37 return $query;38 }39 40 foreach (array(0, $this->alias) as $key) {41 if (isset($results[0][$key][‘count‘])) {42 if ($query[‘group‘]) {43 return count($results);44 }45 46 return intval($results[0][$key][‘count‘]);47 }48 }49 50 return false;51 }
在cakephp测试用例中,有这样的描述:
1 $expected = count($Article->find(‘all‘, array(2 ‘fields‘ => array(‘Article.user_id‘),3 ‘conditions‘ => array(‘Article.user_id‘ => 1),4 ‘group‘ => ‘Article.user_id‘)5 ));6 $result = $Article->find(‘count‘, array(7 ‘conditions‘ => array(‘Article.user_id‘ => 1),8 ‘group‘ => array(‘Article.user_id‘),9 ));
$expected 和 $result 的结果是一样的。那么使用count,group统计也是可行的。
使用find(‘count‘,array(‘fields‘=>‘distinct user_id‘));效果也是一样的。
cakephp中使用 find('count')方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。