我有一个CakePHP的1.2应用中的以下模型:CakePHP的分页与第三级车型
class Equipment extends AppModel {
var $name = 'Equipment';
var $belongsTo=array("City");
///
}
我的城市模型是这样的:
class City extends AppModel {
var $name = 'City';
var $belongsTo=array("State");
///
}
我什么也没做特别在EquipmentController中 - 只需使用Paginator即可获得所有设备。
所以,当我尝试实施这样的观点分页:
<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>
我可以通过设备名称和城市名称的排序,而是由国家名排序由City.id给了我一个排序列表 - 不是State.name。我试过使用City.State.name,但那给了我相同的结果。我已将两个模型的“递归”属性更改为“2”,结果相同。
);
为什么这不起作用?任何人都可以给我一个解决方法或告诉我我做错了什么?
编辑我忘了说我试过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")),
)
而且我看到正确的查询运行,但仍可以通过国家排序
我已经有了SQL调试运行和运行它的右侧查询。当我打开Containable时,我看到正在运行的大型“连接”查询,然后是其他查询来获取州名 - 就像我想的那样。 – MikeHoss 2011-03-23 02:16:23