我在将一些模型链接到一起时遇到了麻烦。用户有三种角色之一:
- 学生
- 讲师
- 管理员
3个角色之间共享的信息存储在User表中。当用户想要更改其角色时,他们会发出角色请求,管理员必须接受该请求。
- 用户有一个学生
- 用户有一名讲师
- 用户有一个管理员
- 用户有一个角色请求
- 学生属于用户
- 讲师属于用户
- 管理员属于用户
我正在努力解决的问题是,如果不检索用户的角色或用户数据两次,我就无法找到检索用户数据的方法。如果我检索递归设置为2的User对象,我会得到两次用户数据,因为它也在讲师对象中。如果我对讲师对象做同样的操作,我会得到讲师数据两次,因为它也在User对象中。
不要使用递归。在AppModel中设置public $recursive=-1;
,然后使用CakePHP的惊人的ContainableBehavior来检索您想要的任何数据。
如果我正确理解了你的问题,我猜你没有使用Contable。
有了这种行为,你可以做一些类似的事情
$this->User->find('all', array('contain'=>'Lecturer'));
并且将检索类似于的阵列
[User] => array(/*user data*/),
[Lecturer] => array(/*Lecturer data*/)
只需记住将您的模型定义为可容纳的。