2015-09-29 47 views
0

我試圖獲得學生的成績(最後一次插入)。如何在cakephp中加入

我可以很容易地使用mysql查詢來獲取記錄。

SELECT student.first_name,student.last_name,result.* 
    FROM result 
    join student 
     on student.student_id=result.student_id 
WHERE result.id IN (
      SELECT MAX(result.id) FROM result GROUP BY result.student_id 
     ) 

我嘗試將其轉換蛋糕的PHP這樣的分頁功能

$this->paginate = array(
    'fields' => array(
     'Student.first_name', 
     'Student.last_name', 
     'Result.*', 
    ), 
    'joins' => array(

     array(
      'conditions' => array(
       'Student.student_id = Result.student_id', 
      ), 
      'table' => 'student', 
      'alias' => 'Student', 
      'type' => 'join', 
     ), 
    ), 
    'conditions' => array(
     'Result.id' => array(
     ), 
    ), 
    'limit'=>10, 
    'contain' => array(
     'Student', 
    ), 
); 
$data = $this->paginate('Result'); 
+0

http://stackoverflow.com/questions/5079908/cakephp -find-method-with-join –

+1

第一個查詢是找到學生和他們的最後結果記錄?這不會是一個非常有效的查詢,例如,在創建新結果時,有'students.last_result_id'並更新它會更有意義。您需要說明您正在使用的CakePHP版本(標記問題)。 – AD7six

+0

版本2.6.X和自定義查詢工作正常 – dev

回答

0

請試試這個

$this->paginate = array(
    'fields' => array(
     'Student.first_name', 
     'Student.last_name', 
     'Result.*', 
    ), 
    'joins' => array(
     array(
      'conditions' => array(
       'Student.student_id = Result.student_id', 
      ), 
      'table' => 'student', 
      'alias' => 'Student', 
      'type' => 'join', 
     ), 
    ), 
    'conditions' => array(
     'Result.id IN (SELECT MAX(result.id) FROM result GROUP BY result.student_id) 
    ), 
    'limit'=>10 
); 
$data = $this->paginate('Result');