cakePHP模型关联(更深入地检索数据)

时间:2012-09-20 15:17:07

标签: cakephp associations models

我试图在任何地方找到这个,但我不能。这是我的问题:

让我们说我有这样的模型:

  1. 学生(有很多会员资格)
  2. 会员(属于学生和教师课程)
  3. 教师课程(属于教师和课程)
  4. 教师(有很多教师课程)
  5. 课程(有很多教师课程)
  6. 当我使用membershipsController将所有成员资格发送到视图时,我只会举例$membership['Membership']['id']$membership['TeacherCourse']['id']但不是$membership['TeacherCourse']['Teacher']['id'] ...

    这意味着我获得有关会员资格和教师课程的信息,因为它们直接相关。我的问题是如何直接获取有关教师或课程的信息?

2 个答案:

答案 0 :(得分:1)

您可以增加模型的递归级别以获得更深层次的关联(将$this->Membership->recursive设置为2或3),但通常最好使用Containable behavior,以便您可以选择要检索的关联。例如,这将返回具有相关教师课程和教师模型的成员资格:

$membership = $this->Membership->find('all', array(
    'contain'=>array(
        'TeacherCourse'=>array(
            'Teacher'=>array()
        ),
    ));

另请参阅http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html

处的可包含行为的完整文档

答案 1 :(得分:0)

当我意识到你需要首先在模型中添加以下内容时,在这个上抓我的头几分钟:

public $actsAs = array('Containable');

如果没有上述内容,只需在控制器中添加包含数组就可能无法返回您在视图中查找的变量。