使用第三级模型进行CakePHP分页

使用第三级模型进行CakePHP分页,cakephp,pagination,models,Cakephp,Pagination,Models,我在CakePHP 1.2应用程序中有以下模型: class Equipment extends AppModel { var $name = 'Equipment'; var $belongsTo=array("City"); /// } 我的城市模型如下所示: class City extends AppModel { var $name = 'City'; var $belongsTo=array("State"); /// }

我在CakePHP 1.2应用程序中有以下模型:

class Equipment extends AppModel {

      var $name = 'Equipment';
       var $belongsTo=array("City");
   ///
}
我的城市模型如下所示:

class City extends AppModel {

     var $name = 'City';
     var $belongsTo=array("State");
  ///
}
  <th><?php echo $paginator->sort('Equipment',"Equipment.name");?></th>
  <th><?php echo $paginator->sort('City',"City.name");?></th>
  <th><?php echo $paginator->sort('State',"State.name");?></th>  
我在设备控制器上没有做什么特别的事情,只是用一个分页器来获取所有的设备

因此,当我尝试在视图中实现分页时,如下所示:

class City extends AppModel {

     var $name = 'City';
     var $belongsTo=array("State");
  ///
}
  <th><?php echo $paginator->sort('Equipment',"Equipment.name");?></th>
  <th><?php echo $paginator->sort('City',"City.name");?></th>
  <th><?php echo $paginator->sort('State',"State.name");?></th>  
为什么这不起作用?有谁能给我一个工作机会,或者让我看看我做错了什么

编辑我忘了说我试过Containable,但也不起作用。我是这样设置的:

   $this->paginate = array(
  "conditions" => array("Equipment.expire_time >"=>date("Y-m-d H:i:s"),
        "Equipment.is_active"=>true
                        ),
  'limit' => 25,        
  'order' => array(
         'Equipment.available_time' => 'asc',

       ),
      'contain'=>array(
             "City"=>array(
               "fields"=>array("id","name"),
               "State"=>array("fields"=>"name")),

              )

我看到正确的查询正在运行,但仍然可以按状态排序

Cake并不总是像某些SQL通常会做的那样连接表,相反,它会从一个查询中选择行,然后foreach,并为循环的每个迭代进行查找

安装类似调试工具包的工具,以便查看SQL正在执行的操作。如果是这样的话,在google上搜索cakephp deep finding,有几种方法可以做到这一点,其中之一就是强制hasOne加入关系

Cake可能正在加载相关模型的AppModel实例。您可以使用pho方法get_class iirc检查这一点。确保没有任何内容是应用程序模型,它应该是您创建的实际类

如果没有太多的查询,则需要调查已创建的关系。尽管对此表示怀疑,但其他两个更可能是原因

编辑。。。

我已经运行了SQL调试器,它正在运行正确的查询。当我打开Containable时,我看到运行的是大型联合查询,然后是其他查询以获取状态名称——就像我所想的那样。