group
、contain
、fields
およびorder
a のオプションは認識していfind()
ますが、CakePHP 2.2.3 で次のクエリを作成できないようです。
SELECT `User`.*, SUM(`Influence`.`id`) AS matches
FROM `db`.`users` AS `User`
LEFT JOIN `db`.`influences_users` AS `InfluencesUser` ON (`User`.`id` = `InfluencesUser`.`user_id`)
LEFT JOIN `db`.`influences` AS `Influence` ON (`InfluencesUser`.`influence_id` = `Influence`.`id`)
WHERE 1 = 1
AND `Influence`.`id` IN (1, 2, 3, 4)
GROUP BY `User`.`id`
ORDER BY COUNT(`Influence`.`id`) DESC
基本的に、テーブルの関数を使用して、1、2、3、および 4の配列Users
を取得してから、 で並べ替えようとしています。Influences
COUNT()
Influences
COUNT() DESC
Model::query()
CakePHPでそうするためのきれいな方法はありますか(ハックや関数のようなものは使いたくないです)。
編集: 私は自分の問題に何も変更していませんが、それは実際にはではありませんでした。SUM()
COUNT()