这是一个跟踪用户爱好的简单应用程序。用户可以有许多爱好,这些爱好被组织成不同的爱好组。
所以我有4个相关的表:用户, users_hobbies ,爱好, hobby_groups 。
用户通过users_hobbies连接表与爱好有很多属于多对的关系。 爱好属于一个业余爱好者群体,爱好群体拥有许多爱好
有道理,到目前为止很简单。
在UsersHobbiesController中,我有:
$paginate = [
'contain' => [
'Hobby' => [
'fields' => ['id', 'name'],
'HobbyGroup' => [
'fields' => ['id', 'name']
]
]
]
];
另外,在我的index()函数中,我构建了分页。
$usersHobbies = $this->paginate('UsersHobby');
$this->set(compact('usersHobbies));
当我访问index.ctp View文件中的$ usersHobbies变量时,它具有构建输出表所需的数据。它看起来像:
array(
(int) 0 => array(
'UsersHobby' => array(...),
'Hobby' => array(
'id' => 'abc-def-ghi',
'name' => 'Jet Skiing',
'HobbyGroup' => array(
'id' => 'oiuy-trew-qldf',
'name' => 'Watersports'
)
)
)
....
)
为了对输出表进行排序,我添加了一些排序列:
<th><?php echo $this->Paginator->sort('Hobby.name', 'Hobby'); ?></th>
<th><?php echo $this->Paginator->sort('Hobby.HobbyGroup.id', 'Hobby'); ?></th>
第一个标题用于对Hobby名称进行排序。但我不能获取第二个标题以排序HobbyGroup。有一种简单的方法可以做到这一点吗?
我在StackOverflow上搜索了几个小时,但似乎无法找到适合我的答案。感谢。