Page モデルに次の仮想フィールドがあります
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 のペアが重複しているため、誤った数または一意のユーザーが返されることです。そのような句でグループを追加しようとしました
$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 の問題ですか? グループを間違って実装していますか?afterfind 以外にこれを行う別の解決策はありますか?