0

我很难将我的一些模型连接在一起。用户具有以下三个角色之一:

  • 学生
  • 讲师
  • 行政

三个角色之间共享的信息存储在用户表中。当用户想要更改其角色时,他们会提出必须由管理员接受的角色请求。

  • 用户有一个学生
  • 用户有一位讲师
  • 用户有一个管理员
  • 用户有一个 RoleRequest
  • 学生属于用户
  • 讲师属于用户
  • 管理员属于用户

我正在苦苦挣扎的是,如果不检索用户的角色或用户数据两次,我就无法找到一种检索用户数据的方法。如果我检索递归设置为 2 的用户对象,我将获得两次用户数据,因为它也在 Lecturer 对象内。如果我对 Lecturer 对象做同样的事情,我会得到两次讲师数据,因为它也在 User 对象内。

4

2 回答 2

1

不要使用递归。在您的 AppModel 中设置public $recursive=-1;,然后使用CakePHP 的 AMAZING ContainableBehavior来检索您想要的任何数据。

于 2013-06-24T15:04:23.837 回答
0

如果我正确理解了您的问题,我猜您没有使用Contaible

有了这种行为,你可以做类似的事情

$this->User->find('all', array('contain'=>'Lecturer'));

这将检索一个类似于

[User] => array(/*user data*/),
[Lecturer] => array(/*Lecturer data*/)

请记住将您的模型定义为可包含的。

于 2013-06-24T15:04:10.677 回答