我有用于用户和组的HABTM。我想在组视图中显示 - 属于用户的所有组。或者换句话说 - 所有拥有用户的组。
我纠结在 MVC 中,无法弄清楚。这是我的两个模型:类 课程扩展应用模型
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 的新手,所以我需要一些帮助。谢谢!
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。 CakePHP 将自动完成其余的工作。