Cakephp检索HABTM的条件是什么

Cakephp检索HABTM的条件是什么,cakephp,has-and-belongs-to-many,relationship,pagination,Cakephp,Has And Belongs To Many,Relationship,Pagination,我正在使用cakephp,希望显示属于类别“X”的所有提交内容 我有4个具有HABTM关系的表 用户->(haveMany)->提交(hasandbelongtomany)类别 但是我想使用$this->paginate()来完成这项工作,对于每次提交,我想显示发布提交的用户 用户表 Id | Name -----+------------------- 1 | User 1 2 | User 2 Id |

我正在使用cakephp,希望显示属于类别“X”的所有提交内容 我有4个具有HABTM关系的表

用户->(haveMany)->提交(hasandbelongtomany)类别

但是我想使用$this->paginate()来完成这项工作,对于每次提交,我想显示发布提交的用户

用户表

Id   |      Name         
-----+-------------------
1    |   User 1      
2    |   User 2     
Id   |      Name         |   User_id
-----+-------------------+--------------
1    |   Submission 1    |      1    
2    |   Submission 2    |      2    
Id   |      Name 
-----+-------------------
1    |   Category 1        
2    |   Category 2        
Id   |   Submission_id   |   Category_id 
-----+-------------------+-------------------
1    |         1         |        1     
2    |         1         |        2  
3    |         2         |        1      
提交表

Id   |      Name         
-----+-------------------
1    |   User 1      
2    |   User 2     
Id   |      Name         |   User_id
-----+-------------------+--------------
1    |   Submission 1    |      1    
2    |   Submission 2    |      2    
Id   |      Name 
-----+-------------------
1    |   Category 1        
2    |   Category 2        
Id   |   Submission_id   |   Category_id 
-----+-------------------+-------------------
1    |         1         |        1     
2    |         1         |        2  
3    |         2         |        1      
类别表

Id   |      Name         
-----+-------------------
1    |   User 1      
2    |   User 2     
Id   |      Name         |   User_id
-----+-------------------+--------------
1    |   Submission 1    |      1    
2    |   Submission 2    |      2    
Id   |      Name 
-----+-------------------
1    |   Category 1        
2    |   Category 2        
Id   |   Submission_id   |   Category_id 
-----+-------------------+-------------------
1    |         1         |        1     
2    |         1         |        2  
3    |         2         |        1      
提交类别表

Id   |      Name         
-----+-------------------
1    |   User 1      
2    |   User 2     
Id   |      Name         |   User_id
-----+-------------------+--------------
1    |   Submission 1    |      1    
2    |   Submission 2    |      2    
Id   |      Name 
-----+-------------------
1    |   Category 1        
2    |   Category 2        
Id   |   Submission_id   |   Category_id 
-----+-------------------+-------------------
1    |         1         |        1     
2    |         1         |        2  
3    |         2         |        1      
我真的很难创建一个可以做到这一点的分页,我开始认为这是不可能的,除非我遗漏了一些东西

如果我没有使用cakephp,这就是我想要做的查询

SELECT 
     * 
FROM 
     submissions_categories, 
     submissions, 
     users
WHERE 
     submissions_categories.category_id = 8 
          AND 
     submissions_categories.submission_id = submissions.id 
          AND 
     submissions.user_id = users.id

我发现,在CakePHP中,HABTM关系非常难以处理。您需要使用$paginate变量手动设置联接。然后可以将可选条件数组传递给paginate()函数。例如:

<?php
class SubmissionsController extends AppController {

 var $name = 'Submissions';
 var $helpers = array('Html', 'Form');
 var $paginate = array('joins' => array(
     array( 
               'table' => 'submissions_categories', 
               'alias' => 'SubmissionsCategory', 
               'type' => 'inner',  
               'conditions'=> array('SubmissionsCategory.submission_id = Submission.id') 
           ), 
           array( 
               'table' => 'categories', 
               'alias' => 'Category', 
               'type' => 'inner',  
               'conditions'=> array( 
                   'Category.id = SubmissionsCategory.category_id'
               ) 
           )));

 function index() {
  $this->Submission->recursion = 1;
  $this->set('submissions', $this->paginate(array('Category.id'=>1)));
 }
}

?>