【问题标题】:Managing a 2 way relationship in CakePHP without retrieving data twice在 CakePHP 中管理双向关系,无需两次检索数据
【发布时间】:2013-06-21 03:30:00
【问题描述】:

我在将我的一些模型连接在一起时遇到了麻烦。用户具有以下三种角色之一:

  • 学生
  • 讲师
  • 管理员

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

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

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

【问题讨论】:

    标签: php cakephp web-applications


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      通过这种行为,您可以执行类似的操作

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

      这将检索一个类似于

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

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

      【讨论】:

        猜你喜欢
        • 2016-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 2011-04-14
        • 1970-01-01
        • 1970-01-01
        • 2016-09-16
        相关资源
        最近更新 更多