で、結局できないので、以下で解決。
$this->User = Classregistry::init('User');
$this->User->bindModel(array('hasOne' => array('Girl')));
$this->User->bindModel(array('hasMany' => array('Rate')));
$fields = array(
'conditions' => array('Girl.hasphoto' => 1 , 'User.agecheck' => 1),
'order' => array('User.modified desc'),
'contain' => array(
'Girl' => array(
'fields' => array('user_id','price','show')
),
'Attachment' => array(
'conditions' => array('alternative' => 'girlphoto'),
'fields' => array(
'id',
'basename'
),
'order' => 'id desc',
'limit' => 1
)
),
'joins' => array(
array('type' => 'left', 'alias' => 'Rate', 'table' => 'ageha_rates',
'conditions' => 'User.id = Rate.user_id')
),
'group' => array('User.id'),//メインモデルの モデル名.id これが重要。ここでまとめないと、一つのテストに対して同じユーザーが何度も表示される。
);
$this->User->virtualFields = array('vfield_rate_sum' => 'sum(Rate.rate)'); // SQL 発行前にバーチャルフィールド設定
$res = $this->User->find('all',$fields);
$res = Set::sort($res,'/User/vfield_rate_sum','desc');
$res = array_slice($res, 0, 20);
pr($res);
全員のポイントを取得して、それで順位別に並び変え。
いらん配列をカット。



