我需要找出每个值重复了多少次。这是我到目前为止所得到的。我想用它来计算民意调查中的选票。
$this->set('votes', $this->Answer->Vote->find('all', array(
'fields' => array('Vote.answer_id'),
'group' => array('Vote.answer_id HAVING COUNT(*) > 1'))));
它会返回哪些值是重复的,如下所示:
1st answer
2nd answer
4th answer
但我仍然需要这个数字,以显示它重复了多少次。像这样的东西。
1st answer (5)
2nd answer (3)
3rd answer (1) // not duplicated
4th answer (8)
编辑: 对我有用的解决方案
在 Controller 中:
$this->set('votes', $this->Answer->Vote->find('all', array(
'fields' => array('Vote.answer_id', 'count(*) as TotalVotes'),
'group' => array('Vote.answer_id HAVING COUNT(*) >= 1'))));
查看中:
foreach ($votes as $vote):
echo $vote[0]['TotalVotes'];
endforeach;
最佳答案
此查询将起作用。
SELECT answer_id, COUNT(*) AS TotalVotes FROM votes GROUP BY answer_id HAVING COUNT(*) > 1
CakePHP 等效查找条件:
$result = $this->Answer->Vote->find('all', array(
'fields' => array('Vote.answer_id', 'count(*) as TotalVotes'),
'group' => array('Vote.answer_id HAVING COUNT(*) > 1')));
您将在 索引 [0]
处的单独数组中找到 TotalVotes
。要解决此问题,只需在选择查询之前编写以下代码即可:
$this->Answer->Vote->virtualFields['TotalVotes'] = 0;
关于cakephp - 如何计算cakephp中的重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12157380/