【发布时间】:2011-11-23 10:24:19
【问题描述】:
我有一个 Location 模型和一个 Event 模型
我想获取每个位置的所有事件的总和
我认为我可以通过使用以下额外模型来做到这一点:
<?php
class Eventcount extends AppModel {
var $name = 'Eventcount';
var $useTable = 'events';
var $virtualFields = array(
'event_count' => 'COUNT(*)'
);
}
?>
这在位置模型中根据需要引用。
但是我认为这会使用 WHERE Location.ID = Eventcount.location_ID 进行 JOIN,但事实并非如此,而是在调试代码中我得到了这个:
SELECT (COUNT(*)) AS `Eventcount__event_count`, `Eventcount`.`location_id` FROM `events` AS `Eventcount` WHERE `Eventcount`.`location_id` IN (6, 11, 13, 15, 7, 14, 4, 5, 10, 2, 9, 3, 1, 8)
因此,我不是每个位置的事件总和,而是第一行 匹配每个位置的所有事件的总和。
即:
[Eventcount] => Array
(
[0] => Array
(
[location_id] => 7
[event_count] => 2
)
)
event_count 旁边的数字 2 是数据库中事件的总数,而不是 location_id = 7 的总数。
我该如何解决这个问题?
【问题讨论】:
-
看来我在某个地方需要一个 GROUP BY,但是如果我想在 find 中使用这个额外的模型,应该把它放在哪里->所有这些都在父级 hmmmmm 上完成......
标签: cakephp model cakephp-1.3 sum