我的页面模型上有以下虚拟字段
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 问题吗?我是否错误地执行了该组?除了事后查找之外,还有其他解决方案吗?