1

我有用于用户和组的 HABTM。我想在组视图中显示 - 属于用户的所有组。或者换一种说法——所有拥有用户的组。

我在 MVC 中纠缠不清,无法弄清楚。这是我的两个模型:课程扩展 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 的新手,所以我很想得到一些帮助。谢谢!

4

1 回答 1

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 会自动完成剩下的工作。

于 2013-11-12T16:54:32.660 回答