获取属于用户的所有组

时间:2013-11-12 15:40:24

标签: php cakephp model-view-controller

我有用户和群组的HABTM。我想在组视图中显示 - 属于用户的所有组。或者换句话说 - 所有拥有用户的组。

我在MVC中纠缠不清,但我无法弄明白。这是我的两个模型: class课程扩展了AppModel

  public $name = 'Course';
  public $hasAndBelongsToMany = array('User' =>
            array(
                'unique' => false
            )
            );

和...

 public $name = 'User';
  public $hasAndBelongsToMany = array('Course' =>
            array(
                'unique' => true
            )
            );

数据库中的表名是courses_users - 此表包含组ID和用户ID。

应该很简单,但我是CakePHP的新手,所以我会喜欢一些帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

CakePHP默认情况下递归设置为1,这意味着假设您没有更改递归设置,它会在您对用户调用find时自动获取所有关联的课程,假设您在执行查找时设置了HABTM关系。因此,您所要做的就是:

$this->User->find('first', array('conditions' => array('User.id' => $this->Auth->user('id'))));

在您的用户模型中,我认为这不是必需的,但我喜欢在HABTM关系中指定连接表等:

public $hasAndBelongsToMany = array('Course' =>
        array(
            'unique' => true,
            'dependent' => false,
            'joinTable' => 'courses_users',
            'foreignKey' => 'user_id',
            'associationForeignKey' => 'course_id',
        )
    );

请记住,在HABTM关系中,除了在设置关系时指定要用作joinTable的表之外,您还没有真正触及joinTable。 CakePHP将自动完成剩下的工作。