2017-03-23 14 views
0

私は学生テーブルと結果テーブルを持っています。学生には多くの結果があります。結果は1人の学生にのみ関連付けられています。だから私が達成しようとしているものは、次のようなものです:アソシエーションCakephp 3の単純なカウントとソート

$this->Students 
    ->find('all') 
    ->contain('Results') 
    ->order('by count of results each student has' => 'asc'); 

助けていただければ幸いです。

+0

は、それが関係やhasManyのをhasOneのです。学生モデルを提供できますか –

答えて

1

は試してみてください、あなたがモデルで定義されている何本

$query = $this->Students->find() 
    $query->select(['total_result'=> $query->func()->count('Results.id')]) 
    ->autoFields(true) 
    ->contain('Results') 
    ->leftJoinWith('Results') 
    ->group(['Students.id']) 
    ->order(['total_result'=>'ASC']); 

debug($query->all()); 

もっとチェックHere

+0

チャームのように働いた。ありがとうございました – degee147

+1

これは、 'GROUP BY'節に現れない' SELECT'節に集約されていない項目を含めることを許可するDMBSでのみ機能することに注意してください。他のDBMS、またはそれをサポートするが、許可しないように設定されているもの(ex [** MySQL 'ONLY_FULL_GROUP_BY' **](https://dev.mysql.com/doc/refman/5.7/en/group-by -handling.html))、 'JOIN'節のサブクエリなどの他の解決策を使用する必要があります。たぶんあなたはメモとその例を追加することができますか? – ndm

関連する問題