我已经尝试寻找这个问题的答案,因为我确定它之前已经整理过,但我找不到任何讨论 cakephp 如何格式化从模型返回的数据的内容。通常我只是看到数据是如何来的,并根据每个控制器/视图的需要处理它。然而,在这种情况下,我想重用我的视图,不幸的是 cakephp 将来自不同控制器的数据交给我的方式给我带来了问题。
我有 2 个模型,关联如下:
class Group extends AppModel {
public $hasMany = array( 'User' );
}
class User extends AppModel {
public $belongsTo = array(
'Group' );
}
我想向View/Groups/view/id
我展示各个组的详细信息,以及属于该组的用户列表。理想情况下,我不想重新创建代码来显示用户列表,因为它已经存在于View/Users/index
我发现我可以使用 $this->extend('/Users/index') 但我不能像我想要的那样只使用 `$this->set('users',$group['User']),因为数组的构建方式不同。
在 UsersController::index() 我会调用$users = $this->find('all');
它给出这样的用户列表:debug($users);
array(
(int) 0 => array(
'User' => array(
'id' => '100',
'group_id' => '101',
)
),
(int) 1 => array(
'User' => array(
'id' => '101',
'group_id' => '101',
)
)
)
在 GroupsController 中使用 $this->Group->contain(array('User')); $group = $this->GroupsController->Group->find('first','conditions'=>array('id'=>$id);
它返回组列表,但采用这种格式debug($group['User']);
'User' => array(
(int) 0 => array(
'id' => '101',
'group_id' => '101',
),
(int) 1 => array(
'id' => '100',
'group_id' => '101',
)
)
无论如何我可以改变我调用模型数据的方式,让它在不同的控制器上以一致的方式传递,无论是主模型还是关联模型?还是我每次只需要循环浏览数据并以正确的格式重建数据?这似乎一旦我的数据集增长,它将成为一个效率问题。