0

我的页面模型上有以下虚拟字段

function __construct($id = false, $table = null, $ds = null) {
    $this->virtualFields['fans'] = 'SELECT COUNT(Favorite.id) FROM favorites AS Favorite WHERE Favorite.page_id = Page.id AND Favorite.status = 0';
    parent::__construct($id, $table, $ds);
}

这可以按预期工作,并显示已将该页面添加到收藏夹的用户数量。问题是,在开发过程中,某些行的 user_id 到 page_id 对重复,因此它返回不正确的数字或​​唯一用户。我尝试像这样添加一个 group by 子句

$this->virtualFields['fans'] = 'SELECT COUNT(Favorite.id) FROM favorites AS Favorite WHERE Favorite.page_id = Page.id AND Favorite.status = 0 GROUP BY Favorite.user_id';

但它不起作用。我尝试调试该问题,但收到错误消息“允许的内存大小已用尽”。我也尝试过使用SELECT COUNT('Favorite.user_id')SELECT DISTINCT('Favorite.user_id')但两者都不起作用。我相信 DISTINCT 离答案更远,因为它会返回一个数组(我相信?)

这是一个已知的 CakePHP 问题吗?我是否错误地执行了该组?除了事后查找之外,还有其他解决方案吗?

4

1 回答 1

1

try this

    SELECT COUNT(DISTINCT Favorite.user_id)

like that :

 $this->virtualFields['fans'] = 'SELECT COUNT(DISTINCT id) FROM favorites  WHERE  status = 0';
于 2013-06-14T13:23:20.687 回答