使用第三级模型进行CakePHP分页
我在CakePHP 1.2应用程序中有以下模型:使用第三级模型进行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"); /// }
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时,我看到运行的是大型联合查询,然后是其他查询以获取状态名称——就像我所想的那样。