Mysql 使用连接多个模型的分页

Mysql 使用连接多个模型的分页,mysql,cakephp,pagination,cakephp-2.4,Mysql,Cakephp,Pagination,Cakephp 2.4,每个考试有一个教学大纲,每个教学大纲有一个考试。所以,我在考试模型中这样做: public $hasOne = 'Syllabuses'; //table: syllabuses, model: Syllabuses 从userscoontroller我这样做了: public $uses = array('Setting', 'Exam', 'Syllabuses'); 在userscoontroller中的一个方法中,我想调用paginate: $options = array(

每个考试有一个教学大纲,每个教学大纲有一个考试。所以,我在考试模型中这样做:

public $hasOne = 'Syllabuses'; //table: syllabuses, model: Syllabuses
userscoontroller
我这样做了:

public $uses = array('Setting', 'Exam', 'Syllabuses');
userscoontroller
中的一个方法中,我想调用paginate:

$options = array(
    'fields' => array('Exam.id', 'Exam.name', 'Syllabuses.id', 'Syllabuses.name', 'Syllabuses.syllabus', 'Syllabuses.last_updated'),
    'joins' => array(
        'table' => 'syllabuses',
        'conditions' => array('Exam.id = Syllabuses.exam_id')
    )
);
$this->paginate = $options;
$this->set('syllabuses', $this->Paginator->paginate('Syllabuses'));
考试表:

---+------+
id | name |
---+------+
课程及教学大纲表:

---+---------+------+----------+--------------+
id | exam_id | name | syllabus | last_updated |
---+---------+------+----------+--------------+
所以,我犯了一些错误。像这样:

错误:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解要在第1行(
教学大纲
`)上使用的近“教学大纲数组左连接
oes
教学大纲作为
教学大纲
的正确语法

CakePHP编写的SQL是:

SELECT `Exam`.`id`, `Exam`.`name`, `Syllabuses`.`id`, `Syllabuses`.`name`, `Syllabuses`.`syllabus`, `Syllabuses`.`last_updated` 
FROM `oes`.`exams` AS `Exam` syllabuses Array 
LEFT JOIN `oes`.`syllabuses` AS `Syllabuses` ON (`Syllabuses`.`exam_id` = `Exam`.`id`)
WHERE 1 = 1 LIMIT 20
但是我想要的是下面的查询,我已经在mysql中测试过了:

SELECT  `Exam`.`id` AS eid,  `Exam`.`name` AS ename,  `Syllabuses`.`id` AS sid,  `Syllabuses`.`name` AS sname,  `Syllabuses`.`syllabus` ,  `Syllabuses`.`last_updated` 
FROM  `oes`.`syllabuses` AS  `Syllabuses` , exams AS Exam
WHERE Exam.id = Syllabuses.exam_id
ORDER BY Exam.id
LIMIT 20

现在请大家帮我实现这一点。什么样的改变可以让CakePHP准备这样的查询(我尝过的)来完成我的
分页。

好的,我认为这对许多程序员都有帮助。这就是为什么我想分享我最后做的事情:

$options = array(
    'fields' => array(
        'Exam.id',
        'Exam.name',
        'Syllabuses.id',
        'Syllabuses.name',
        'Syllabuses.exam_id',
        'Syllabuses.syllabus',
        'Syllabuses.last_updated'
    ),
    'recursive' => 0,
    'conditions' => array('Exam.id = Syllabuses.exam_id'),
    'limit' => 3
);
$this->paginate = $options;
$syllabuses = $this->Paginator->paginate('Exam');